![如何通过多个ssh运行本地bash脚本](https://linux22.com/image/158834/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%A4%9A%E4%B8%AAssh%E8%BF%90%E8%A1%8C%E6%9C%AC%E5%9C%B0bash%E8%84%9A%E6%9C%AC.png)
我有一个本地 bash 脚本,我想在第二个 ssh 服务器上运行它。
步骤如下:
user$
- 本地计算机
user$ ssh -A ssh
- 登录第一个 ssh
user@ssh01:~$ ssh server2
- 登录第二个 ssh
user@server2:~$
- 登录第二个 ssh 服务器
我可以使用以下命令在本地计算机上的第一个 ssh 服务器上运行 bash 脚本:
user$ ssh -A ssh 'bash -s' < script
但是,我不知道如何在第二个 ssh 服务器上执行此操作。
当我尝试从第一个 ssh 执行此操作时,它会抛出错误
user@ssh01:~$ ssh server2 'bash -s' < script
-bash: script: No such file or directory
请指教
答案1
ssh -At ssh 'ssh -At server2 -- bash -s' < script
这将 ssh 到第二跳并在那里运行脚本。
注意:
- 我将第二个 ssh 命令括在引号中。
- 我用来
-t
将终端传递给两个 ssh 会话。
您还可以使用此处描述的方法进行 ssh直接地到第二跳:
https://www.cyberciti.biz/faq/linux-unix-ssh-proxycommand-passing-through-one-host-gateway-server/
总结一下,将以下内容添加到~/.ssh/config
:
Host server2
HostName server2
User username
ProxyCommand ssh username@jumphost nc %h %p