欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

外网连接内网电脑

程序员文章站 2022-06-03 21:45:07
...

需求:

实验室有一台服务器,但用的是校园网,想平时可用另一台电脑(Mac)远程连接服务器,跑跑数据啥的

原理:

校园网是内网,外网看不见内网IP,因此正常用SSH连接不了内网主机。但内网可与外网通信,因此我们可以先用内网主机SSH连接外网,然后在外网主机用反向SSH连接内网。

操作步骤:

由于我们自己的电脑未必有外网IP,因此我们需要一个固定的外网IP,可搞个云服务器啥的(阿里云,腾讯云等,学生价9元一个月)。

1.准备云服务器A,内网主机B,自己使用的电脑C(我的是Mac,自带终端可用SSH,window系统的可下载Putty连接)

2.在内网主机B执行:

ssh -NCfR 1111:localhost:22 [email protected] -p 22

-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口

username为服务器用户名,通常为root,IP为服务器公网IP,注意不是内网IP(如阿里云公网IP可在控制台上查)

3.上面的操作:公网A的1111端口被映射成内网主机B的22端口,现在在服务器B上执行命令:

ssh [email protected] -p 1111

即登陆本地的1111端口,相当于登陆内网服务器B的22端口,即连上了内网B了

4.由于这种反向SSH会因超时而被关闭,因此下面使用免密码登陆

登录内网服务器,创建私钥和公钥:

ssh-****** -t rsa -f ~/.ssh/id_rsa -P ''  #-t 指定类型,-f指定文件生成路径,-P指定文件密码(''表示无密码)

将生成的公钥拷贝到外网服务器:

ssh-copy-id -i .ssh/id_rsa.pub [email protected]   # 这里的username为外网服务器用户名,IP为外网服务器的IP

拷贝成功,测试连接,此时内网服务器可以免密登录外网服务器

 ssh [email protected]    # 这里的username为外网服务器用户名,IP为外网服务器的IP

参考:https://blog.csdn.net/MOU_IT/article/details/80441501