SSH proxycommand 不在同一局域网的机器ssh直连
本地和192.168.1.10不在同一个网络,可以通过jumpserver跳转过去,操作如下
选项
- -L 本机端口
- -f 后台启用,可以在本机直接执行命令,无需另开新终端
- -N 不打开远程
shell
,处于等待状态,不跳到远程主机,还在主机上,只是搭好了隧道,桥搭好,不ssh上去 - -g 启用网关功能
- -R 服务端口
配置
Host jumpserver
HostName 1.1.1.1
User root
Port 12321
Host node15
HostName 192.168.1.10
ProxyCommand ssh -q -W %h:%p jumpserver
在ansible的配置文件里面也可以直接用-o选项来进行配置
ssh_args = -o "ProxyCommand ssh -W %h:%p root@192.168.1.60"
使用场景
-
vscode 进行远程开发
-
ansible 通过跳板机执行
-
rsync同步数据
rsync -vrtopz --progress -e ' ssh -ax -c blowfish ' xx@ip1:/data/ /data1/
示例
$ ssh –L 9527:telnetsrv:23 -N sshsrv
$ telnet 127.0.0.1 9527
流程解释
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
data < >localhost:9527 < > localhost:XXXXX < > sshsrv:22 < > sshrv:yyyyy < > telnetsrv:23
数据一旦telnet
以后,数据会发送到本机9527端口,再在本机开一个随机端口,充当ssh
客户端,再把数据流量发送到22端口的sshsrv服务端。sshsrv收到数据以后,解密数据,临时开一个随机端口充当ssh客户端,再把流量发送到23端口telnet服务端。