ssh代理

https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/

  1. -L(local)

在 SSH Client(C) 执行下列命令来建立 SSH 连接以及端口转发:
$ ssh -g -L 7001:<B>:389 <D>
然后在我们的应用客户端(A)上配置连接机器(C )的 7001 端口即可。注意我们在命令中指定了“ -g ”参数以保证机器(A)能够使用机器(C)建立的本地端口转发。

-L 本地端口转发绑定的是 lookback 接口,这意味着只有 localhost 或者 127.0.0.1 才能使用本机的端口转发 , 其他机器发起的连接只会得到“ connection refused. ”。
好在 SSH 同时提供了 GatewayPorts 关键字 -g,我们可以通过指定它与其他机器共享这个本地端口转发。

应用:
实验室网络内的jenkins(B)无法访问
办公网络(A)可以访问实验室控制机(D)
在(D)上执行:
ssh -g -L 8080:B.IP:8080 127.0.0.1


  1. -D(dynamic)

$ ssh -D 7001 <SSH Server>
选择了 7001 作为本地的端口号,其实在这里 SSH 是创建了一个 SOCKS 代理服务,支持SOCKS4 and SOCKS5
代理客户端设置SOCKS 代理可以上网

应用:
方法一:
pub.ip能上google,本机能连上pub.ip,本机是代理机:
ssh -CfNg -D 127.0.0.1:7979 root@pub.ip
ssh -g -L 9999:localhost:7979 root@localhost
方法二:
pub.ip能上google,本机公网proxy.ip,proxy.ip(本机)能连接pub.ip,proxy.ip(本机)是代理机:
ssh -CfNg -D proxy.ip:9999 root@pub.ip
-C 进行压缩
-f 后台运行 
-N 不执行远程命令,只做端口转发

  1. -R(remote)

$ ssh -R 7001:localhost:389 LdapClientHost
在 LdapClient上的应用将数据发送到本机的 7001 端口上,而本机的 SSH Server 会将 7001 端口收到的数据加密并转发到 LdapServert的 SSH Client 上。 
SSH Client会解密收到的数据并将之转发到监听的 LDAP 389端口上,最后再将从 LDAP返回的数据原路返回以完成整个流程。

应用:
ssh反向链接
1.主机A(a.ip)上
a.
ssh -N -f -R 8888:localhost:22 root@pub.ip

b.
apt-get install autossh
autossh -M 5678 ssh -N -f -R 8888:localhost:22 root@pub.ip
-f 后台运行 
-N 不执行远程命令,只做端口转发

2.服务器(pub.ip)上
ssh -g -L 9999:localhost:8888 localhost

3.主机B(b.ip)上执行如下就能登陆内网主机A
ssh -p 9999 pc@pub.ip


  1. -D(windows下用putty实现)
puyyt命令:
PLINK.EXE -C -N -D 127.0.0.1:7000 root@202.115.22.x:21314
对应linux:
ssh -CfNg -D 127.0.0.1:7000 root@202.115.22.x:21314

原文地址:https://www.cnblogs.com/amize/p/13867335.html