我经常需要ssh到服务器,但是当我连接到VPN时,我无法直接进入服务器。因此,我必须ssh到另一个服务器并从那里ssh到它。有什么方法可以为此编写脚本和/或shell函数吗?我试过这个,因为它给了我一个错误:
% ssh jason@server2 'ssh jason@server1'
jason@server2's password:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
(当然用户名和服务器名称已更改)
答案 0 :(得分:4)
无法显示密码提示。我认为所有这些都可以使用公钥(例如,转发ssh-agent以消除输入密钥密码的需要)。
答案 1 :(得分:3)
SSH连接堆叠可能对您有所帮助。假设以下布局:客户端 - > Middleman - >目标
在客户端:
ssh user@Middleman -L 1337:Destination:22
这将允许您在另一个会话中直接从客户端SSH到目标:
在客户端:
ssh user@localhost -p 1337
该命令的运行就像您输入了 ssh user @ Destination 一样。您可以将stdin管道传输给它,就像您直接连接到它一样。
答案 2 :(得分:1)
从我看到的,问题是中间机器上的ssh无法获得标准输入。我想它只是想要你的密码。如果这是真的,也许您应该尝试设置ssh密钥,以便您可以在没有密码的情况下进行ssh。注意:如果成功,您最好在中间计算机上创建一个新用户,以将该密钥作为安全措施。
答案 3 :(得分:1)
听起来您想要在中间计算机和终端计算机之间设置公钥认证。
这里有一些很好的指南可以帮助您入门。祝你好运。
http://hkn.eecs.berkeley.edu/~dhsu/ssh_public_key_howto.html