我目前正在使用下面的脚本来从我的本地机器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.
我认为我的报价可能有问题,但我无法弄清楚是什么。请帮忙。
感谢。
答案 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
列出第一个主机没有的目录。