首页 > 技术文章 > SSH端口转发访问内网服务器

ltzhang 2020-08-22 10:24 原文

公司内网有台8核8G的服务器可以用来各种实验。虽然配置不是太高,但是相对于自己1核2G的学生机来说已经不知道强到哪里了。但由于是内网的缘故只能在公司内访问,虽然通过远程桌面也能使用,但是这样未免太low了。于是想到用ssh来进行端口转发,在家也能访问内网服务器。

条件

内网服务器必须能连外网

服务器信息如下:

服务器名称 服务器ip ssh端口 服务器配置
公网服务器 122.34.122.32 54374 1核2G
内网服务器 172.18.10.23 22 8核8G

步骤

1.在内网服务器上执行:

ssh -N -f -R [122.34.122.32:]10022:172.18.10.23:22 root@122.34.122.32 -p54374

参数解释:

-N:不执行远程命令,如果ssh仅仅是用来转发端口很有用。

Do not execute a remote command. This is useful for just forwarding ports.

-f:将本条命令放到后台执行,防止内网服务器ssh窗口关闭导致无法连接到内网服务器

-R:设置转发规则,本条规则是把本地22端口的请求转发到122.34.122.32的10022端口,形成一条通路。

-p 54374:指定公网服务器的ssh端口用于登录

2.登录公网服务器,查询端口发现端口已经监听:

[root@bochs ~]# ss -tnl | grep :10022
LISTEN     0      128          *:10022                 *:*                  
LISTEN     0      128       [::]:10022                 [::]:* 

3.在122.34.122.32连接10022端口,输入内网服务器的root密码登录:

ssh -p10022 122.34.122.32

命令执行完成即已登录到内网服务器

top - 23:14:46 up 22 days,  5:26,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 280 total,   2 running, 278 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :  0.0 us,  2.6 sy,  0.0 ni, 97.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.0 us,  2.7 sy,  0.0 ni, 97.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8008440 total,  5914008 free,   730108 used,  1364324 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6954304 avail Mem 

真香!

延伸

如果内网的服务器上有mysql同样可以使用端口转发访问内网的mysql

ssh -N -f -R 33060:172.18.10.23:3306 root@122.34.122.32 -p54374

mysql -h127.0.0.1 -P33060 -uroot -p 

推荐阅读