李子

ssh端口转发实现外网访问
实现目的:内网端口映射到外网 供远程连接。操作目标: 小主机:centos6.8环境:1.vps一台且有公网地址:...
扫描右侧二维码阅读全文
18
2018/09

ssh端口转发实现外网访问

实现目的:内网端口映射到外网 供远程连接。
操作目标: 小主机:centos6.8
环境:
1.vps一台且有公网地址:192.210.219.30
2.内网主机1台(小主机)

vps:
修改sshd配置文件。
vim /etc/ssh/sshd_config
GatewayPorts yes
或者
sed -i "s/.*GatewayPorts no/GatewayPorts yes/g" /etc/ssh/sshd_config

/etc/init.d/sshd restart

关闭selinux。
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

防火墙放行指定端口,如有安全组还需在安全组中放行。
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

小主机:
运行命令并输入vps的密码。
ssh -gfnNTR 8080:127.0.0.1:22 root@192.210.219.30 -p22 -o ServerAliveInterval=300

-o ServerAliveInterval=300
    的意思是让ssh client每300秒就给server发个心跳,以免链路被RST.
  -f Requests ssh to go to background just before command execution.
    让该命令后台运行 .
  -n Redirects stdin from /dev/null (actually, prevents reading from stdin).
 
  -N Do not execute a remote command.
    不执行远程命令 .
  -T Disable pseudo-tty allocation.
    不占用 shell .
  -g Allows remote hosts to connect to local forwarded ports.
    允许非本机地址(任何公网IP)连接x.x.x.x的8080端口.{see man sshd_config(5)}.
    这个选项非常重要, 要让这个选项生效需要在x.x.x.x服务器(ssh server)上编辑/etc/ssh/sshd_config 添加一行GatewayPorts yes 然后保存退出并 service sshd restart.

检查是否正常运行.
ps -ef|grep ssh

检查vps中端口是否正常监听.
ss -nl|grep 8080

web访问设置:
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}

更多用法请自行百度。

Last modification:September 18th, 2018 at 02:14 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment