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"

使用场景

  1. vscode 进行远程开发

  2. ansible 通过跳板机执行

  3. 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服务端。

image

refer

SSH端口转发(本地转发、远程转发、动态转发)

posted @ 2020-04-04 14:31  hiyang  阅读(1574)  评论(0编辑  收藏  举报