Ssh反向隧道
SSH反向隧道
基本设置
内网主机执行命令:
ssh -fN -R 55022:localhost:22 felix@12.34.56.78
-fN
表示后台执行,且不执行任何命令-R 55022:localhost:22
定义反向隧道,通过公网服务器的55022端口,将流量转发到内网服务器的22端口felix@12.34.56.78
公网服务器用户名和地址
外网主机执行命令,登录内网主机:
ssh localhost -p 55022
开放端口
默认55022端口绑定在127.0.0.1网口上,需要放开端口。编辑公网服务器 /etc/ssh/sshd_config 文件,打开 GatewayPorts:
GatewayPorts yes
重启 sshd 服务
持久连接
首先配置免密码登录
$ su - userA #这步可省略,但需要确保以下命令是在A机上以userA用户的身份运行的
$ ssh-keygen -t rsa #连续三次回车,即在本地生成了公钥和私钥,不要设置密码
$ ssh-copy-id -p VPS的SSH端口 -i ~/.ssh/id_rsa.pub userVPS@VPS的IP
在内网主机上安装并配置autossh
$ sudo touch /var/log/ssh_nat.log && sudo chmod 777 /var/log/ssh_nat.log
$ sudo vim /lib/systemd/system/autossh.service #将下例内容粘贴复制进去
[Unit]
Description=Auto SSH Tunnel
After=network-online.target
[Service]
User=userA #改掉这里本机的用户
Type=simple
ExecStart=/usr/bin/autossh -M 6777 -NR 8388:127.0.0.1:22 -i ~/.ssh/id_rsa userVPS@VPS的IP -p VPS的SSH端口 >> /var/log/ssh_nat.log 2>&1 &
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
RestartSec=30s
[Install]
WantedBy=multi-user.target
WantedBy=graphical.target
启动服务
$ sudo chmod +x /lib/systemd/system/autossh.service #给予可执行权限
$ sudo systemctl enable autossh #设置开机自启
$ sudo systemctl start autossh #现在就启动服务
$ sudo systemctl status autossh #查看状态,出现Active: active (running)表示正常运行
参考链接
blog comments powered by Disqus