<localhost> ---- <jumphost> ---- <remotehost>
- ssh远程执行
$ ssh -i path/to/private.key <remoteuser>@<remotehost> "<CMD>"
<CMD>是任何可以在远程执行的命令,例如:
pwd
ls -l
cd ~/ && ls -ltr
cd ~/bin && ./setup.sh
- ssh通过跳转机器执行远程命令
这个意思是本地机器不能直接登录目标机器,必须通过中转机才能登录。
$ ssh -i path/to/private.key <jumpuser>@<jumphost> \
"ssh -i path/to/private2.key <remoteuser>@<removehost> 'CMD'"
其实比较ssh的远程执行命令,也就是把在跳转机上的命令写成一个新的ssh远程执行命令即可。
- scp通过跳转机拷贝文件
$ cat <localfile> | \
ssh -i path/to/private.key <jumpuser>@<jumphost> \
"cat | ssh -i path/to/private2.key <remoteuser>@<remotehost> 'cat > path/to/final/file'"
这个办法是传递文件内容,会把文件的读写属性丢失;另外一种办法还是使用scp可以保留文件读取属性。
scp -o 'StrictHostKeyChecking no' -i path/to/remotehost.key \
-o "ProxyCommand ssh -o 'StrictHostKeyChecking no' path/to/jumphost.key -W %h:%p <jumpuser>@<jumphost> 2>/dev/null" \
<localfile> <remoteuser>@<remotehost>:<path/to/remotefile>
注意这里的两个key: path/to/remotehost.key和path/to/jumphost.key都是本地的路径,不是jumphost上的路径。
网友评论