| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | namespace Renci.SshNet.IntegrationTests{    internal class RemoteSshd    {        private readonly IConnectionInfoFactory _connectionInfoFactory;        public RemoteSshd(IConnectionInfoFactory connectionInfoFactory)        {            _connectionInfoFactory = connectionInfoFactory;        }        public RemoteSshdConfig OpenConfig()        {            return new RemoteSshdConfig(this, _connectionInfoFactory);        }        public RemoteSshd Restart()        {            // Restart SSH daemon            using (var client = new SshClient(_connectionInfoFactory.Create()))            {                client.Connect();                // Kill all processes that start with 'sshd' and that run as root                var stopCommand = client.CreateCommand("sudo pkill -9 -U 0 sshd.pam");                var stopOutput = stopCommand.Execute();                if (stopCommand.ExitStatus != 0)                {                    throw new ApplicationException($"Stopping ssh service failed with exit code {stopCommand.ExitStatus}.\r\n{stopOutput}\r\n{stopCommand.Error}");                }                var resetFailedCommand = client.CreateCommand("sudo /usr/sbin/sshd.pam");                var resetFailedOutput = resetFailedCommand.Execute();                if (resetFailedCommand.ExitStatus != 0)                {                    throw new ApplicationException($"Reset failures for ssh service failed with exit code {resetFailedCommand.ExitStatus}.\r\n{resetFailedOutput}\r\n{resetFailedCommand.Error}");                }            }            return this;        }    }}
 |