如何通过服务器直接进行 ssh 和 scp?

如何通过服务器直接进行 ssh 和 scp?

我通过以下方式连接到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

相关内容