1,>linux设置内网穿透
一:前提条件:
A服务器,具有公网ip,
B 服务器,局域网,也就是需要转发出去的服务器。
在A和B服务器中安装ssh,yum install ssh
二:在A服务器中:
首先在A服务器上编辑sshd的配置文件/etc/ssh/sshd_config(也可以使用find / -name sshd_config查看具体路径),将GatewayPorts 开关打开:
1,将GatewayPorts no
改为:GatewayPorts yes
2,重启sshd:
systemctl restart sshd
三:在B服务器中:
1,配置免密码登录,在B服务器生成公钥并负责到服务器A中
#
ssh
-keygen -t rsa
#连续三次回车,即在本地生成了公钥和私钥,不要设置密码
#
ssh
-copy-
id
-i ~/.
ssh
/id_rsa.pub
-p 22 root@220.126.67.120
参数解释:22为远程服务器的ssh端口,root为远程服务器的用户,220.126.67.120为远程服务器的IP.
2,配置autossh
采用autossh保存自动长链接,但是在centos系统中,autossh需要自己编译源码安装,步骤如下:
# wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz(好像不行,用下面的连接)
# wget https://fossies.org/linux/privat/autossh-1.4g.tgz
# tar -xf autossh-1.4e.tgz
# cd autossh-1.4e
# ./configure
# make
# make install
3,内网穿透:
autossh -p 22 -M 6768 -fCNR '*:8010:127.0.0.1:81' root@wwggzp.com
即可,访问www.wwggzp.com:8010即可访问到本地服务器的81端口
参数解释:
-p 22 usera@a.site :表示连接远程服务器a.site(也可以是ip,这里是域名)中用户名为usera的连接,连接端口为22,也是远程ssh的默认端口
-M 6768 ;参数指定的端口用来监听隧道的状态,连接有问题时就会自动重连,autossh本身在后台运行,与端口转发无关。
-NR '*:8010:127.0.0.1:81' ;将当前本地端口81,转发到wwggzp.com的8010端口上,访问www.wwggzp.com:8010既可以访问本地81端口。
注释:以上方法可以同时配置多个内网穿透服务器。
2,>开机自启动内网穿透:
将autossh写入系统服务,使之在开机时可以自动建立SSH隧道,实现开机自启动内网穿透功能。
1,在服务器B中,在文件夹/lib/systemd/system中,创建autossh.service文件,并设置权限为644,并将以下内容保存到autossh.service中。
[Unit]Description=Auto SSH Tunnel
After=network-online.target
[Service]
User=root
Type=simple
ExecStart=/usr/local/bin/autossh -p 22 -M 6768 -NR '*:8010:127.0.0.1:81' root@wwggzp.com -i /usr/local/autossh/.ssh/id_rsa
ExecReload=/usr/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
WantedBy=graphical.target
2,在服务器B上设置autossh自动启动:
systemctl enable autossh
3,启动服务
systemctl start autossh
3.在windows系统下的内网穿透
目的,微信小程序需要https,每次上传到服务器调试非常麻烦,现在将https请求转发到本地环境,每次调试时只要做一次内网穿透就行。数据还是从本地服务器拿,只是经过了公网转发。
A服务器(linux系统),具有公网ip,
B 服务器(windows),局域网,也就是需要转发出去的服务器。
一,同样在A服务器中:
首先在A服务器上编辑sshd的配置文件/etc/ssh/sshd_config(也可以使用find / -name sshd_config查看具体路径),将GatewayPorts 开关打开:
1,将GatewayPorts no
改为:GatewayPorts yes
2,重启sshd:
systemctl restart sshd
二,在服务器B中,下载putty,
设置装发参数:
三,点击open,在命令行界面输入用户名和密码即可转发。
注意事项:1,转发后可用netstat -ntlp命令在服务器A中查看端口是否监听
2,在转发后收不到服务器数据,很有可能是本地服务器没有返回数据,出现的坑,https服务器没有将http转到https中,所有采用http访问时,没有任何数据。需要使用https访问。