新闻资讯

两个内网之间的linux服务器如何互相登录

2018-10-18

如果两个内网之间的linux服务器需要互相登录,或需要互相访问内网某个端口,担忧没有公网IP,可以使用的方法有ngrok(https://ngrok.com/), 但并不方便,我们只需两条 SSH 命令即可。

SSH 内网端口转发实战SSH 内网端口转发实战

先给出本文主角,两条SSH命令:

远程端口转发(由远程服务器某个端口转发到本地内网服务器端口)

ssh -CfNg -R(命令行的关键) 2222(远程服务器端口):127.0.0.1:22(本地端口) 123.45.67.8(远程服务器)

本地端口转发(由本地内网服务器某个端口转发到远程服务器端口)

ssh -CfNg -L(命令行的关键) 2222(远程服务器端口):0.0.0.0:4444(本地端口) 123.45.67.8(远程服务器)

命令行选项解释:

-C:压缩数据传输。
-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-N :不执行脚本或命令,通常与-f连用。
-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
-L 本地端口:目标IP:目标端口
-T 不分配 TTY 只做代理用
-q 安静模式,不输出 错误/警告 信息

需要让远程机器能访问的内部机器的端口号(端口:22)

在清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道,在内网主机执行
ssh -CfNg -R 2222:127.0.0.1:22 123.45.67.8
现在,在IP是123.45.67.8的机器上我们用下面的命令就可以登陆内网IP为192.168.0.100的机器了。
ssh -p 2222 localhost
现在公网ip的 123.45.67.8 主机可以本地访问内网服务端了,那内网客户端要怎么登陆呢?,我们只需要把内网客户端的 4444 端口映射到 123.45.67.8 的 2222端口即可。
现在我们需要本地转发了。
ssh -CfNg -L 2222:0.0.0.0:4444 123.45.67.8
执行完后,本地的内网客户端 4444 端口已经和 123.45.67.8 的 2222 端口连接起来,然后 123.45.67.8 的 2222 端口 又和 内网服务端的 22 端口连接起来,成为一个完整的映射链。

花生壳远程访问

SSH是基于应用层的加密传输协议,由于其加密传输的特性,适合于不安全的网络环境中远程访问设备。那么怎样通过SSH连上让没有公网地址的家庭设备,实现远程访问呢?其中比较简单的方法是通过端口映射实现内网穿透,一款叫做花生壳软件可以解决这个问题。原理可理解为:你没事儿就打电话告诉花生壳你家住哪,然后告诉快递员送碟找花生壳,花生壳核对了主人名字,带着快递员进你家。在Win/Mac/Linux和树莓派上都有终端,唯独不支持安卓。手机可是最方便简易的设备啊! 有没有想过,在自己手机上架一个网站,发布到外网?或者远在天边的你拿一Pad,通过SSH访问位于任意内网的手机,在用手机远程辅导孩子功课,打开电脑关掉电视节目?或者在不那么友好的滲透测试环境里,靠放一台手机优雅的完成任务,避免笨重的PC和一看就不是好人的树莓派的尴尬。 如何实现呢? 最简单的思路就是在手机上用虚拟机跑个Linux,再装个Linux的花生壳客户端就可以了。