ssh内网穿透,ssh隧道代理上网

  • 实现可以通过外网访问内网内某一台电脑,可以通过域名访问某个内网的项目
  • 前提有一台外网服务器,有自己的域名更好

废话连篇代码讲解:

1
ssh -gfnNTR x.x.x.x:5000:y.y.y.y:22 [email protected] -o ServerAliveInterval=300

看下上面代码的几个参数含义
x.x.x.x 可以是你公网服务器的IP,也可以是127.0.0.1、再或者localhost代替。
5000 表示你公网服务器暴露的端口,只要访问这个端口,都会转发给你的内网设备。
y.y.y.y是你需要做内网穿透设备的IP,也可以是127.0.0.1、再或者localhost代替。
22 内网服务器暴露的端口,所有访问公网暴露的端口都会转发到此处。
root 表示你的公网服务器中的root账户。
z.z.z.z是公网服务器的静态IP,这里要注意了:如果你的公网IP做了域名映射,可以直接是[email protected]。如果没有就直接是[email protected]

正儿八经的实验

首先要在公网服务器做如下配置:

1
sudo vi /etc/ssh/sshd_config

在最后一行添加 GatewayPorts yes 保存退出
执行重启ssh服务命令

1
service ssh restart

然后在内网服务器执行下面命令:

1
ssh -gfnNTR 123.45.56.78:5000:localhost:22 [email protected] -o ServerAliveInterval=300

回车输入你服务器登录密码即可完成内网穿透
验证是否成功的方法,找另外一台电脑输入:

1
ssh 内网主机用户名@123.45.56.78 -p 5000

回车输入内网主机登录密码即可

内网穿透 域名映射

举个栗子:现有内网项目端口8080,域名my.abc.com 要求通过域名可以访问内网8080端口的项目,上代码!内网要映射项目的机器执行

1
ssh -gfnNTR localhost:50001:localhost:8080 [email protected] -o ServerAliveInterval=300

域名:my.abc.com 映射到公网ip 123.45.56.78
公网服务器配置nginx

1
docker run --name my-nginx -p 80:80 -v /home/nginx/conf.d:/etc/nginx/conf.d -d nginx

my-nginx 容器名字
/home/nginx/conf.d 宿主机的nginx配置文件存放目录自行更改

在/home/nginx/conf.d 文件夹下创建文件:abc.conf 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## set web-application proxy
upstream my.abc.com{
ip_hash;
server localhost:50001 max_fails=3;
}
server{
listen 80;
server_name my.abc.com.com;
location / {
proxy_pass http://my.abc.com.com;
index index.html,index.jsp;
#proxy settings
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

重启nginx服务

1
docker restart my-nginx

访问域名测试收工。

ssh隧道代理上网

1
ssh -qTNf -D 127.0.0.1:12345 [email protected]

x.x.x.x 代表公网ip
-q表示该命令进入安静模式
-T是指该命令不占用shell
-N是指该命令不执行远程命令
-f是指该命令在后台运行
-D是该命令重要参数,他的后面跟着socks5服务器的地址与端口

本机配置代理127.0.0.1 端口:12345 就可以了。。。谷歌浏览器推荐使用插件:proxy-switchyomega

文章目录
  1. 1. 废话连篇代码讲解:
  2. 2. 正儿八经的实验
  3. 3. 内网穿透 域名映射
  4. 4. ssh隧道代理上网
,