通过脚本ssh后ssh到另一台机器

时间:2017-06-14 07:07:41

标签: bash ssh

我有3台服务器,

server1 - > server2 - >服务器3

Server2只能通过服务器1和服务器3通过server2访问。

每次连接断开时,我都必须手动登录到两台服务器。 有没有办法通过脚本通过这条路径登录和打开bash终端到server3?

2 个答案:

答案 0 :(得分:0)

我有同样的问题,我有一个解决方案。我使用xdotool来模拟密钥(和xclip来复制从其他文件中提取的密码)。此脚本打开与单独控制台选项卡中的服务器列表的ssh连接。根据您的需要进行编辑。

for IP in $SERVERS
do
    xdotool key ctrl+shift+t type "ssh $USER@$IP"
    xdotool key Return
    sleep 1
    xdotool key ctrl+shift+v
    xdotool key Return

done

脚本只是迭代服务器表。它打开新的控制台选项卡,打印" ssh some_user @ some_ip"然后模拟retrun键。 睡眠仅用于确保脚本有时间连接到服务器。最后粘贴密码,然后输入第一个服务器。 还有一件事: 脚本运行时不要触摸键盘。我希望它可以帮助你。

答案 1 :(得分:0)

使用ssh_config file,这样您就可以轻松进行设置,然后使用ssh -F ssh_config servername直接连接。

假设您已经登录到server_1并希望通过server_2连接到server_3,它看起来像这样:

Host server_2
  HostName xxx.xxx.xxx.xxx
  Port xxxx
  User server2_user

Host server_3
  HostName xxx.xxx.xxx.xxx
  Port xxxx
  ProxyCommand ssh -F ssh_config  server_2
  User server3_user

使用此功能,您可以使用ssh -F ssh_config server_3,它将连接到server_2,然后从那里直接转到server_3。

如果您将ssh_config放在默认位置,您还可以省略-F ssh_config部分(在命令和配置文件中),因为它会自动被选中。

有关详细信息,请查看this link,或在网上搜索“ssh jumphost'”,这是您设置的更广泛使用的说明(服务器2是服务器3中的jumphost)你的情况)。