我的问题有点类似于所描述的here,但不一样。 除非它们是二进制文件,否则我不能在外部服务器S1 / S2 / S3上使用sudo(例如,安装软件包)。
我想要一个脚本,该脚本执行所有这些步骤,并使终端保持打开状态,因为我觉得这很愚蠢,每天都要键入所有这些命令,但不知道如何更改:)< / p>
我的尝试:
#!/bin/bash
ssh -C2qtnN -D1001 S1 & #C1 which is tunel for the browser
ssh S1
ssh S2 # here it fails, trying to execute "ssh S2" locally
ssh S3 # same as above
C2 # initialization command that has to be run before byobu on S3
byobu #this one wont work either - to open byobu ;S
答案 0 :(得分:0)
我找到了可行的解决方案:
脚本 ssh_teleport.sh 如下所示:
#!/bin/bash
ssh -C2qtnN -D1001 S1 &
echo "tunnel ready!"
ssh -tt $1 'bash -l -c "C2"'
其中{strong> $ 1可以是{S1,S2,S3}中的任何主机 C2是一个完整的命令(不幸的是,别名却无法使用),可以在$ 1中给出的ssh上运行
为了跳转(感谢@chepner),我不得不在本地计算机上修改.ssh中的配置,其描述方式为here:
Host S1
HostName IP_of_S1
User MyUsername1
Host S2
HostName someHostname1
User MyUsername2
ProxyJump S1
Host S3
HostName someHostname2
ProxyJump S2
User MyUsername3
最后一步是为.bashrc添加一个别名:
alias teleportS3='./scripts/ssh_teleport.sh S3'
它达到了目的!