C# C中通过SSH.NET的多跳SSH#
我正在对一台Linux机器执行SSH,并且再次希望通过SSH对另一台Linux机器执行一些Performce任务C# C中通过SSH.NET的多跳SSH#,c#,.net,ssh,ssh.net,C#,.net,Ssh,Ssh.net,我正在对一台Linux机器执行SSH,并且再次希望通过SSH对另一台Linux机器执行一些Performce任务 using (SshClient ssh = new SshClient("ip address","username", "pwd")) { ssh.Connect(); command = ssh.CreateCommand("ssh hostname"); result = command.Execute(); Console.WriteLine
using (SshClient ssh = new SshClient("ip address","username", "pwd"))
{
ssh.Connect();
command = ssh.CreateCommand("ssh hostname");
result = command.Execute();
Console.WriteLine(result);
}
其中ssh主机名
是一个无密码的ssh。如何控制第二个SSH会话并向其传递命令
甚至探索了
CreateShell
函数,但似乎不建议将其用于自动化。一般来说,尝试自动化ssh
命令是一个糟糕的设计
最好使用端口转发(又称SSH隧道)来实现“跃点”
在某些情况下,自动化
ssh
是可以接受的(但仍然不理想)。例如,因为在第一台主机上设置了第二台主机的身份验证。也就是说,.ssh
文件夹中可能有私钥,不允许您将该密钥传输到客户端计算机
即使这样,也可以尝试与系统管理员交谈,以找到更好的解决方案。私钥仍然可以使用应用程序中包含的凭据进行访问,因此如果私钥本身直接包含在应用程序中,它就不会受到更好的保护
无论如何,ssh
可以在其命令行上接受命令,如:
command = ssh.CreateCommand("ssh hostname command");
result = command.Execute();
Console.WriteLine(result);
一般来说,尝试自动化
ssh
命令是一个糟糕的设计
最好使用端口转发(又称SSH隧道)来实现“跃点”
在某些情况下,自动化
ssh
是可以接受的(但仍然不理想)。例如,因为在第一台主机上设置了第二台主机的身份验证。也就是说,.ssh
文件夹中可能有私钥,不允许您将该密钥传输到客户端计算机
即使这样,也可以尝试与系统管理员交谈,以找到更好的解决方案。私钥仍然可以使用应用程序中包含的凭据进行访问,因此如果私钥本身直接包含在应用程序中,它就不会受到更好的保护
无论如何,ssh
可以在其命令行上接受命令,如:
command = ssh.CreateCommand("ssh hostname command");
result = command.Execute();
Console.WriteLine(result);
如果您只是创建一个新命令并发送它(例如,
touch test
),然后查看它在哪台机器上执行(文件test
),会发生什么情况?我尝试了“ls-la”命令,它是在第一个ssh会话本身上执行的。它是什么意思“无密码ssh”?这是如何配置/允许的?我已经配置了从第一个Linux设备到第二个Linux设备的无密码ssh。如果您只是创建一个新命令并发送它(例如,touch test
),然后查看它在哪台机器上执行(文件test
),会发生什么情况?我尝试了“ls-la”命令,它是在第一个ssh会话本身上执行的。它是什么意思“无密码ssh”?这是如何配置/允许的?我已经配置了从第一个Linux设备到第二个Linux设备的无密码ssh。