ssh反向代理+正向代理实现远程登录

用一台能够公网访问的host作为跳板机,转发不同端口到内网目标机的ssh端口,进而实现ssh远程登录。

配置中将会用到的SSH参数:

  • 反向代理 ssh -fCNR

  • 正向代理 ssh -fCNL

-g:允许远程主机连接主机(host)的转发端口;

-f 后台执行ssh指令

-C 允许压缩数据

-N 不执行远程指令

-R 将远程主机(服务器)的某个端口转发到本地主机指定的端口

-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口

-p 指定远程主机的端口


  1. 设置反向代理,将跳板机代理端口连接请求转发至本机端口,目标机执行:
  • 安装SSL库
$wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$tar -zxvf openssl-1.0.1j.tar.gz
$cd openssl-1.0.1j
$./config && make && make install
  • 安装autossh
$ sudo yum install wget gcc make
$ wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
$ tar -xf autossh-1.4e.tgz
$ cd autossh-1.4e
$ ./configure
$ make
$ sudo make install
  • 配置ssh免登陆

a. 目标机执行:

$ssh-keygen -t rsa
$scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh

b. 跳板机执行:

$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 自动重连 + 反向代理
$autossh -M [port-alaive] -NfR [host1-foreign]:[port-proxy]:[host2]:[port2] -o ServerAliveInterval=60 [user1]@[host1-foreign] -p [port1]

[user1] 跳板机用户名

[host1-foreign] 跳板机公网地址

[port1] 跳板机端口

[host2] 目标机地址

[port2] 目标机端口

[port-proxy] 代理端口

[port-alaive] 心跳端口

$autossh -M 10021 -NfR 1.1.1.1:10011:10.61.46.54:22 -o ServerAliveInterval=60 [email protected] -p 9892
#输入跳板机密码
  1. 跳板机本机测试,跳板机执行:
$ssh [user]@127.0.0.1 -p [port-proxy] 

[user]为目标机用户名

[port-proxy] 代理端口

$ssh [email protected] -p 10011
#输入目标机密码
  1. 启用公网访问目标机(建立本机公网到本机localhost的隧道的正向代理),跳板机执行:
$ssh -g -L [port-listen]:localhost:[port-proxy] [user]@[host-foreign] -p [port]

[user] 跳板机用户名

[host-foreign] 跳板机公网地址

[port] 跳板机端口

[port-listen] 跳板机监听端口,外网访问

[port-proxy] 代理端口

$ssh -g -fN -L 9891:localhost:10011 [email protected] -p 9892 
#输入跳板机密码
  1. 本机测试:
$ssh [user]@[host-foreign] -p

[port-listen]

[user] 跳板机用户名

[host] 跳板机公网地址

[port-listen] 跳板机监听端口

ssh [email protected] -p 9891

你可能感兴趣的:(config)