Ale*_*ios 61
如果服务器 B 可通过访问访问ssh
并且您只需要ssh
(不是直接scp
或sftp
),这也很有效:
ssh -t $SERVER_A ssh $SERVER_B
Run Code Online (Sandbox Code Playgroud)
-t
即使在另一端运行单个命令时,该选项也会强制分配伪 tty。这很有帮助,因为ssh
需要一个伪 tty。
由于您使用的是 的两个嵌套实例ssh
,因此内部会话中的转义字符是Enter ~ ~(两个波浪号)。一个波浪号会将转义发送到第一个 shell。
Dan*_*man 19
ssh
除了使用端口转发之外,没有内置的方法可以做到这一点。
但是,有一种方法相当有效ProxyCommand
——ssh的设置。您可以在每个主机的基础上~/.ssh/config
指定它并使用它来指定要运行以连接到远程 ssh 端口的命令。
我在几个主机上使用它:
host serverB.example.com serverB
ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p
Run Code Online (Sandbox Code Playgroud)
有关ssh(1)
详细信息,请参阅手册页,以及我用于转发连接的命令nc(1)
的netcat
包。(不过,您可以使用任何建立 TCP 连接并通过它传递标准输入和输出的东西。)