如何编写脚本以从远程计算机ssh到计算机?

时间:2009-09-09 14:57:05

标签: bash scripting automation ssh

我经常需要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).

(当然用户名和服务器名称已更改)

4 个答案:

答案 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

     

http://pkeck.myweb.uga.edu/ssh/