xiaoxiong's blog Thinking and Action

ssh 反向代理配置

2016-12-24
ssh

问题描述

学习笔记记录,配置ssh反向代理,远程登录局域网主机

反向代理建立流程

背景说明:

需要从不同局域网访问局域网lan1中的用户user1,通过一个公网服务器进行流量转发user2@server

user1反向连接

反向连接代理图

user1@lan1:$ ssh -NfR 20002:localhost:22 user2@server

这样访问user2@server:20002 就相当于访问user1@lan1:22

参数解释:

  1. -N 不执行任何指令
  2. -f 后台执行
  3. -R 使用远程端口转发

N 和 R 通常共同使用

实例运用

我需要在外网访问本地虚拟机ubuntu的8080端口

1. 在公网server /etc/ssh/sshd_config文件下添加
2. GatewayPorts yes   //这个作用是把转发的端口绑定在0.0.0.0的接口上,让外部地址也可以访问
3. 重启sshd: sudo service ssh restart
4. 在虚拟机上 ssh -NfR 20002:localhost:8080 user2@server
5. 虚拟机查看 进程 netstat -atpn ,需要关闭进程 kill 对应进程号

在外网访问本地虚拟机windows的8080端口

1. xshell ssh登上目标服务器
2. 菜单栏选中 查看, 再勾选 隧道窗格
3. 隧道窗格 切换到 转移规则 页面
4. 添加 类型:Remote(incoming) ,源主机:公网server, 监听端口:20002, 目标主机:localhost,目标端口:8080
5. 状态显示 打开(等待几秒,开始可能是等待)

使用公私钥登录

使用ssh-keygen生成公私钥

复制 内网主机上的公钥到外网主机

待解决 一直permission denied

~/.ssh/ 文件夹 权限700 
~/.ssh/authorized_keys 权限600
sudo vi /etc/ssh/sshd_config
RSAAuthentication yes  
PubkeyAuthentication yes  
AuthorizedKeysFile     .ssh/authorized_keys 
seLinus 关闭

autossh 自动连接

autossh -M 5678 -NfR 20001:localshost:22 user2@server

参数 -M 5678表示通过 5678端口监视连接状态,连接有问题就会自动重载,

ssh 端口转发

本地转发(-L)

本地转发图

命令说明,在host_A上执行

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>
举例: ssh -L <A_port>:<C>:<C_port> <B>
-g 可以指定它与其他机器共享本地端口转发

访问A_port,将流量通过B转发到C:C_port,当把C设置成localhost表示表示访问B:B_port;然后流量再原路返回。

B为SSH Server,A为Client,所以A必须可以访问到B。

远程转发(-R)

远程转发图

访问C:C_port,经过B转发,可以访问到A:A_port

命令说明,在host_A上执行

ssh -R <remote port>:<destinative host>:<destinative port> <SSH hostname>
ssh -R 9090:host_C:port_C B

B监听9090端口,这样访问 B:9090就等同通过A访问C:port_C

如果C设置为localhost就等同访问A:port_A,在反向代理时经常使用

动态转发(-D)

ssh -D <local port> <SSH Server>
ssh -qTfnN -D 7070 -p 22 user@host
-D 绑定本地端口
-p 远程服务器的端口
-q Quiet mode,ssh的诊断信息以及警告等信息被抑制
-T 禁用伪终端分配
-f 该选项是后台执行的ssh在规定时间(10秒)内进行连接,如果超过该时间ssh将退出。
-n 重定向标准输入到/dev/null中,为了防止从标准输入中读入。ssh进行后台执行时必须使用该参数。该选项对于要求输入密码不起作用
-N 不执行远程命令

在client端上执行命令,并在浏览器出配置SOCKS代理

动态转发无需再指定远程主机及其端口。它们由通过 SOCKS协议 连接到本地主机端口的那个主机

参考


Comments