我通过以下方式连接到server2:
home$ ssh server1
server1$ ssh server2
server2$
我有时也需要通过这种方式进行 scp,这会花费一些额外的时间:
home$ ssh server1
server1$ scp server2:file .
server1$ exit
home$ scp server1:file .
有没有办法在家里用一个命令完成这个?我正在使用公钥认证,但如果它也能用于密码就更好了。
答案1
我建议使用 MobaXterm:你只需要
- 从这里下载:http://mobaxterm.mobatek.net/download-home-edition.html
- 点击“新会话”并选择“ssh”
- 在“远程主机名”字段中指定您的“server2”计算机名或 IP 地址
- 在“SSH 弹跳(通过网关 ssh 服务器连接)”字段中指定您的“server1”计算机名称或 IP 地址
这将启动一个新的 SSH 命令,直接发送到您的“server2”计算机。在窗口左侧,您还可以访问图形 SFTP 文件传输工具,该工具也将直接连接到“server2”。
答案2
您可以使用 SSH 隧道,方式如下:
ssh -f server1 -L 8888:server2:22 -N
这将在本地机器的端口 8888 上打开一个套接字(假设没有其他进程正在使用该端口),该套接字通过 server1 建立与 server2 的连接隧道(假设 SSH 正在该端口的端口 22 上运行)。 和-N
标志-f
告诉 SSH 分叉到后台(如果您想停止隧道,则必须终止该进程)。
现在你可以从 server2 scp 文件,只需执行以下操作
scp -P 8888 localhost:file
答案3
home$ server1 "ssh server2"
但当涉及更多服务器时,转义命令字符串将会很痛苦。
答案4
使用 SOCKS5 和动态隧道
创建到第一台机器的动态 ssh 隧道。然后,使用第一个连接作为 SOCKS5 代理来访问远程网络上的第二台主机。
通过 putty 可以轻松设置。您可以根据需要多次重复使用代理。有些程序直接支持 SOCKS5。例如 putty 和 ssh。
在 Linux 下,可以使用 proxychains 代理不支持 SOCKS5 的程序。在 Windows 下,我喜欢使用 Proxycap。它与 RDP 配合得很好。
要使用 Putty 进行设置:
在第一个主机设置页面的隧道下:
- 创建动态隧道
- 将端口设置为 9050。
- 将目标部分留空,因为它是动态的。
- 保存您的设置。(从会话页面完成。)
然后,在第二台主机的代理下配置:
- 选择 SOCK55。
- 将代理主机名更改为 127.0.0.1
- 将端口设置为 9050
- 然后正常设置其余会话
- 保存设置
要连接到第二台主机。您首先必须连接并登录到第一台主机。然后,您应该能够通过代理 ssh 连接连接到第二台主机,
您也可以从命令行使用 ssh_config 条目执行此操作: http://www.undeadly.org/cgi?action=article&sid=20070925181947