Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中通过SSH.NET的多跳SSH#_C#_.net_Ssh_Ssh.net - Fatal编程技术网

C# C中通过SSH.NET的多跳SSH#

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

我正在对一台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(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。