ssh 本地\远程转发\代理用法

ssh命令参数

-A  开启SSH-Agent
-C  压缩数据传输
-f  后台登录用户名密码
-N  不执行shell[与 -g 合用]
-g  允许打开的端口让远程主机访问        
-L  本地端口转发
-R  远程端口转发
-p  ssh 端口
-W  开启转发标准输入标准输出

SSH 本地端口转发实例

本地端口转发的命令格式:

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

场景:两台机器,本地主机 host_A 和 远程主机 host_B,但是由于防火墙的原因两台机器无法互相通信,而另外一台机器 host_3 却可以同时访问这两台机器,那么我们就可以设法通过 host_Chost_Ahost_B 之间搭一座桥梁,让他们彼此能通信。

比如说,ssh -p 22 -CNfL 4000:10.0.0.1:4000 user1@192.168.33.100 这条命令,本地的机器跟 10.0.0.1 的机器无法直接连接,而 192.168.33.100 可以链接,它能够连接10.0.0.1机器。所以可以用192.168.33.100作为跳板机,在我本机和 10.0.0.1 之间开一个“隧道”,并将端口号设置为 4000,这样 10.0.0.1 4000 端口的所有数据都会被转发到我本机的 4000 端口。

最常用:

ssh -A -pSSH端口 -CNfL 本地端口:内网服务器IP:内网服务器端口 用户名@跳板机IP

ProxyCommand的方式

在~/.ssh/config文件中添加类似如下配置

Host 10.0.0.*
    ForwardAgent Yes
    ProxyCommand ssh -p 22 192.168.33.100 -W %h:%p 2>/dev/nul

参考资料

  1. 实战 SSH 端口转发
  2. Linux 下 SSH 命令实例指南
  3. ssh 端口转发
  4. [ssh 代理]http://www.zsythink.net/archives/2450/

发表新评论