我有3台服务器,
server1 - > server2 - >服务器3
Server2只能通过服务器1和服务器3通过server2访问。
每次连接断开时,我都必须手动登录到两台服务器。 有没有办法通过脚本通过这条路径登录和打开bash终端到server3?
答案 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)你的情况)。