我需要通过跳转服务器连接到远程主机,但该服务器向我提供了一个菜单,如下所示
Please make a selection (1 2 ... q)
1. SSH Remote Server
2. Open a local session
q. Exit
从菜单中,我需要选择(1),然后使用远程主机的地址回答下一个提示:
Enter the hostname or IP of the server you want to connect to :
是否可以使用该程序自动执行此连接ssh_config
,或者我是否需要编写expect
脚本或类似脚本?
还有更好的选择吗?
答案1
既然您要求“任何更好的选择”,那么可能可以绕过“跳转服务器”上的菜单。
一个选项是,这个菜单是由你的登录 shell 实现的,因为程序是你的登录 shell 或者因为它被调用经过您的登录 shell(例如在您的 中~/.bash_profile
)。在这种情况下,您应该能够通过明确运行交互式非登录 shell 作为远程命令来绕过它:ssh -t jump_server bash -i
。
更好的是,“跳转服务器”上运行的 ssh 服务器可能允许您进行一些端口转发。然后,该命令ssh -W remote_host:22 jump_server
通过与您的“跳转服务器”的 SSH 连接,在 TCP 端口 22 上与“远程主机”建立连接。您可以使用它通过从您的计算机到“跳转主机”的第二个 SSH 连接,建立从您自己的计算机到“远程主机”的 SSH 连接ssh -o ProxyCommand='ssh -W %h:%p jump_server' remote_host
。
如果可行,您可以使用以下两行来自动化操作.ssh/config
:
Host remote_host
ProxyCommand ssh -W %h:%p jump_server
然后,运行ssh remote_host
就会自动通过“跳转服务器”将你连接到“远程主机”。