赞
踩
此方案直接使用本机外网IP穿透,如果IP不固定,可以安装个向日葵、花生壳之类的软件,用的时候查看最新IP。
登录服务器:ssh root@XXX.XXX.XXX.XXX -p 22
(1)首先修改服务器 B 的 sshd_config 配置文件:
vi /etc/ssh/sshd_config
(2)打开 GatewayPort(删除前面的 # 号,将其设置为 yes)>: 键盘按i,编辑配置:
GatewayPort yes
键盘按ESC,输入:wq保存退出
(3)修改保存后,执行如下命令将 sshd 服务重启下:
systemctl restart sshd
此项的意思是,SSH 隧道监听的服务的 IP 是对外开放的 0.0.0.0,而不是只对本机的 127.0.0.1。不开 GatewayPorts 的后果是不能通过 外网IP:X 访问,只能在外网服务器上通过 127.0.0.1:XX 访问到本地开发机的服务
(4)使用以上方法还是无法访问 外网IP:XX,请检查你外网服务器的防火墙配置
打开XX端口
firewall-cmd --zone=public --add-port=XX/tcp --permanent && firewall-cmd --reload
查看已开端口:
firewall-cmd --list-ports
关闭端口
firewall-cmd --zone=public --remove-port=XX/tcp --permanent && firewall-cmd --reload
(1)使用ssh
ssh -CqTfnN -R :外网映射端口:localhost:本地映射端口 root@外网IP -p 22
(2)查看状态
前往外网服务器,可以看到这个监听是否成功链接:
netstat -anp | grep 外网映射端口
(3)关闭映射
在外网服务器上查看指定端口,对应的sshd进程,Kill相应进程结束转发服务
kill -9 进程ID
(4) 自动重连
SSH 隧道是不稳定的,在网络恶劣的情况下、或因为超时可能随时断开。如果断开就需要手动去本地开发机再次向外网服务器发起连接。
AutoSSH 能让 SSH 隧道一直保持执行,他会启动一个 SSH 进程,并监控该进程的健康状况;当 SSH 进程崩溃或停止通信时,AutoSSH 将重启动 SSH 进程。
为此我们需要结合免密码登录及 AutoSSH 来提供稳定的 ssh 反向代理隧道。
a、在内网主机 B 上产生公钥和私钥
ssh-keygen
然后按三次回车执行默认选项生成公钥和私钥。会生成密钥文件和私钥文件 id_rsa,id_rsa.pub 或 id_dsa,id_dsa.pub
b、拷贝秘钥 在内网主机 B 上继续执行如下命令,将内网主机 B上的秘钥文件 copy 到公网主机 A 中。
ssh-copy-id user@服务器ip
其中“user”是公网主机 的用户名,ip 为公网主机 A 的 ip,然后按照提示输入公网主机A 的密码就完成了。
(5) 通过源码安装autossh;
$ wget www.harding.motd.ca/autossh/autossh-1.4e.tgz --no-check-certificate
$ tar -xf autossh-1.4e.tgz
$ cd autossh-1.4e
$ ./configure
$ make & make install
(6)启动autossh
只要把 autossh -M XX 替换为 ssh 即可:
autossh -M 外网映射端口 -CqTfnN -R :外网映射端口:localhost:本地映射端口 root@外网IP -p 22
(7)开机自启动
vi /etc/rc.d/rc.local
#将上一步(6)中代码copy到底部,保存并退出
chmod +x /etc/rc.d/rc.local
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
frp 有以下特性:
先看看服务器是否开启了任务监听对应端口,默认连接端口是7000
netstat -tunlp | grep 7000
如果任务已开始监听,然后看看防火墙是否开放了这个端口,很重要
(1)编辑服务端文件frps.ini:
[common]
bind_port = 7000
#dashboard_port = 7500
#dashboard_user = admin
#dashboard_pwd = admin
#authentication_method = token
#token = 设置密码
(2)启动服务frps
./frps -c frps.ini
(3)登录控制面板查看frp服务状态和已连入主机
服务器IP:7500
(1)编辑配置文件frpc.ini
[common] server_addr = 服务器IP server_port = 7000 #authentication_method = token #token = 对应服务器端密码 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 2222 [rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 3389
(2)启动连接frpc
为了方便,建个bat脚本,可设置开机启动
Start frpc.exe -c frpc.ini
ngrok 是一个商用的内网穿透工具,它有以下特点:
1、方便远程桌面,打开本机3389,通过远程映射,实现《远程桌面》访问。
2、架设内网服务器,内网ssh远程访问等服务。
3、通过nginx映射,实现域名访问本地服务器,模拟线上环境。
server {
listen 80;
server_name 你的外网域名;
charset utf-8;
location / {
proxy_pass http://localhost:映射端口;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。