公司内网有台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