SSH从本地到A,从A到B并在B

时间:2018-03-23 14:34:50

标签: shell ssh scripting

我目前正在使用下面的脚本来从我的本地机器ssh到服务器(让我们称之为ip-address1)然后从那台机器我想要ssh到另一台机器(让我们称这台机器为ip-address2)。我使用的脚本如下:

sshpass -p mypassword ssh -tt user@ip-address1 ssh -tt -i /root/.ssh/vm_private_key user@ip-address2 "pwd; ls;"

问题是只有第一个命令(pwd)在ip-address2上执行然后它关闭并且ls命令在ip-address1上执行然后关闭。我希望这两个命令都能在ip-address2上执行。我的终端输出如下:

/home/user (pwd command executing here)
Connection to ip-address2 closed.
//files then get outputted here (ls command executes after ip-address2 has 
closed)
Connection to ip-address1 closed.

我认为我的报价可能有问题,但我无法弄清楚是什么。请帮忙。

感谢。

1 个答案:

答案 0 :(得分:1)

我没有办法测试这个,但请尝试以下方法:

sshpass -p mypassword ssh -tt user@ip-address1 \
    "ssh -tt -i /root/.ssh/vm_private_key user@ip-address2 'pwd; ls;'"

您肯定需要引用要在ip_address1上运行的整个命令,包括您传递给ip_address2的命令。

修改

我在一个可以测试多台机器的环境中;以下命令适用于我:

ssh snewell@<host sanitized> \
    "ssh <host2 sanitized> 'hostname; ls -a <path sanitized>;'"

hostname肯定显示最终服务器(host2)的结果,ls列出第一个主机没有的目录。