您的位置:首页 > 汽车 > 新车 > 内外网映射访问内网服务器

内外网映射访问内网服务器

2024/12/28 12:28:16 来源:https://blog.csdn.net/k0307x1990y/article/details/139789810  浏览:    关键词:内外网映射访问内网服务器

如果本地有公网ip,比如连接的宽带有公网ip,可以直接通过路由配置转发就行了,如果本地没有公网ip,那就需要通过下面这种方式来访问内网服务器了。

1:首先内网服务器需要连接外网,可以通过网线或者WiFi都可以。

2:准备三台服务,一台是内网服务器A,一台是阿里云公网服务器B(47.96.79.177),一台是其他可以访问外网的设备C

3:内网服务器A和公网服务器B互相同步密匙,准备内网服务器A密匙

#进入内网服务器A,执行下面命令
cd ~/.ssh 或者 cd /.ssh  #如果提示没用该目录,则需要生成该目录和下面的文件,直接在内网服务器A通过执行下面这个命令就可以了
ssh-keygen -t rsa (一直回车,无需配置密码)#执行完成后,再次cd ~/.ssh,可以发现在该文件下面会出现id_rsa 和id_rsa.pub文件

4:开始同步密匙,配置A ssh到 B的免密登陆

#在内网服务器A执行同步密匙命令,该命令会要求输入外网服务密码,直接输入就行
#ssh-copy-id -i ~/.ssh/id_rsa.pub -p A的某远程端口 A的用户名@A的IP
#or
#ssh-copy-id -i .ssh/id_rsa.pub A的用户名@A的IP
#or
#ssh-copy-id  A的用户名@A的IP
#or
#下面这一步是复制A的~/.ssh/id_rsa.pub内容到B的~/.ssh/authorized_keys中ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@47.96.79.177执行完成后,会在内网服务器A ~/.ssh/目录下出现known_hosts文件,里面是外网服务器的信息

同时此时登录到阿里云公网服务器B,也会在B服务器~/.ssh目录下看到authorized_keys文件,里面是内网服务器信息。

5:配置阿里云公网服务器B的ssh参数(尤其是AllowTcpForwarding yes 和 GatewayPorts yes

这2个要开启,其他参数可选配置)

vim /etc/ssh/sshd_config#连接超时及转发相关:
GatewayPorts yes
TCPKeepAlive yes
ClientAliveInterval 60  
ClientAliveCountMax 3#证书相关:
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keysAllowTcpForwarding yes(如修改参数,修改后重启ssh服务)
systemctl restart sshd

6:安装autossh

安装方式一
# 安装autossh
# CentOS
yum install -y autossh
# Ubuntu
apt install -y autossh# 编译安装,安装方式二 官网:https://www.harding.motd.ca/autossh/
$ sudo yum install wget gcc make
$ wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
$ tar -xf autossh-1.4e.tgz
$ cd autossh-1.4e
$ ./configure
$ make
$ sudo make install
make install$ which autossh
/usr/local/bin/autossh

7:在内网服务器A执行命令进行端口转发(注意此处如果是阿里云这种云服务器,需要对监听的端口开通安全组)

autossh -M 0 -2 -4 -N  root@47.96.79.177 -p 22 -o ServerAliveInterval=5 -o ServerAliveCountMax=3 -o StrictHostKeyChecking=no -o TCPKeepAlive=yes -R 0.0.0.0:22219:localhost:22 -R 0.0.0.0:22220:localhost:8082

该命令执行完成后,会在47.96.79.177上打开22219和22220监听,通过 netstat -anp|grep 22219命令查看22219端口监听情况,注意图1是AllowTcpForwarding yes 和 GatewayPorts yes这2个没用开启执行后的结果,图2是开启后执行的结果

图1

图2

图1这种只能在47.96.79.177本地通过ssh -p22219 root@localhost访问内网,图2已经可以在其他外网服务器C上通过命令ssh -p22219 root@47.96.79.177来访问内网服务器了

关于图1和图2访问不同得原因说明

一般通过netstat -anp|grep 端口查看端口监听信息,监听端口前面如果是127.0.0.1说明只能在该服务器本地访问,如果监听端口前面如果是0.0.0.0 说明可以在外部访问该服务器了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com