需求
外网SSH连接学校内网的Windows科研电脑上的linux虚拟机
思路
学校网络之外的外网机器 SSH远程连接 内网电脑对应的外网IP,内网电脑接受到外网SSH连接请求,再通过虚拟机的NAT模式(端口转发模式),即宿主PC机转发外网SSH请求到虚拟机对应的端口号,间接的访问虚拟机的Linux。
prerequisite
有了思路,我们需要做的准备
- VMware的网络连接选择NAT模式—>达到转发SSH请求到虚拟机的效果
- 虚拟机要有对应的SSH服务—>
sudo apt-get install openssh-server
- 使用nat123达到内网穿透
知识补充
学校内网的ip实际上网络经过了很多中间层的映射,而这个映射很复杂的,学校也不可能告诉我们,所以不可以或者很难直接用内网IP映射成外网IP,进而提供SSH服务。
但是我们可以使用工具,如nat123、神卓互联、花生壳等,将学校内网IP直接映射成外网IP
let’s start
1 设置VMware
- 虚拟网络编辑器
在VMnet8类型换成NAT模式
在进行NAT设置之前,需要查看虚拟机的IP,使用ifconfig
aliceyu@aliceyu-virtual-machine:~$ ifconfig
ens33 Link encap:Ethernet HWaddr 00:0c:29:14:cd:ad
inet addr:192.168.11.128 Bcast:192.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::f557:95a2:e8bf:5b89/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9979 errors:0 dropped:0 overruns:0 frame:0
TX packets:2844 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8368432 (8.3 MB) TX bytes:201165 (201.1 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:789 errors:0 dropped:0 overruns:0 frame:0
TX packets:789 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:63342 (63.3 KB) TX bytes:63342 (63.3 KB)
可以看到inet addr:192.168.11.128
,这个IP其实是内网IP
设置NAT
- 添加端口转发:
- 设置端口转发
到现在为止,Windows宿主机已经可以将请求通过虚拟机的NAT模式转发到虚拟机了。
但是前提是虚拟机要支持openssh-server。默认linux系统里是没有的。
2 在虚拟机中下载SSH服务
1. 下载 openssh-server
打开Ubuntu的终端,输入:
sudo apt-get install openssh-server
安装完毕后ssh默认已启动。可以使用下述命令查看是否有进程在22端口上监听,即是否已启动:
netstat -nat | grep 22
2. 允许root用户远程登录
终端输入命令 sudo vim /etc/ssh/sshd_config ,修改ssh服务配置文件
sudo vim /etc/ssh/sshd_config
找到PermitRootLogin,将参数prohibit-password改为yes,原来是prohibit-password,如图所示:
- 设置完需ssh配置文件,我们需要要重启ssh服务,命令 service sshd restart 或者 /etc/initd.d/sshd restart
3. 测试
在Windows宿主机上下载SecureCRT软件。
打开SecureCRT软件,进行配置:
ProtoCol模式选为 SSH2
,Port为 22
(前面NAT设置等虚拟机端口号),HostName为192.168.124.23
(那就是我们宿主PC机的IP地址),UserName为我们Ubuntu的登录账户。
PassWord为我们Ubuntu的登录密码
配置完成后,如果成功,会进入虚拟机的界面
到现在为止,我们已经完成了Windows宿主机通过虚拟机NAT模式转发SSH请求到虚拟机,并且虚拟机支持openssh-server操作。接下来就剩下最后一步:将windows宿主机的内网IP(就是例子中的192.168.124.23)映射到外网。
3 使用nat123达到内网穿透
nat相关操作
在宿主机上下载nat123程序 ,使用自己的帐号登录。如没有帐号,可以“注册帐号”进入网站进行注册。
主面板/端口映射列表/添加映射
设置映射信息。选择非网站应用映射类型。填写内网LINUX地址端口,和外网访问的域名。可以使用自己的域名,也可以使用免费二级域名。外网端口在添加映射时,会自动分配一个可用端口,不用更改。将鼠标放在输入框有向导提示。
这是官网的教程:
添加映射后,可查看映射状态。将鼠标放在映射图标上有提示当着状态信息。新添加映射一般几分钟内生效。
4 进行SSH连接
用处在外网的电脑连接
命令行输入:
ssh aliceyu@160b2b1e.nat123.cc -p 13604
解释:
aliceyu:虚拟机用户名
160b2b1e.nat123.cc:nat123随机分配的域名
-p 13604:指定的服务端口号,也是nat123分配的
其实还有一种连接方式:
ping
域名得到外网IP
AliceYudeMacBook-Pro:~ alice$ ping 160b2b1e.nat123.cc
PING 160b2b1e.nat123.cc (139.199.62.115): 56 data bytes
64 bytes from 139.199.62.115: icmp_seq=0 ttl=229 time=42.318 ms
64 bytes from 139.199.62.115: icmp_seq=1 ttl=229 time=40.618 ms
64 bytes from 139.199.62.115: icmp_seq=2 ttl=229 time=39.732 ms
64 bytes from 139.199.62.115: icmp_seq=3 ttl=229 time=46.012 ms
64 bytes from 139.199.62.115: icmp_seq=4 ttl=229 time=56.567 ms
64 bytes from 139.199.62.115: icmp_seq=5 ttl=229 time=43.138 ms
64 bytes from 139.199.62.115: icmp_seq=6 ttl=229 time=56.581 ms
64 bytes from 139.199.62.115: icmp_seq=7 ttl=229 time=39.161 ms
64 bytes from 139.199.62.115: icmp_seq=8 ttl=229 time=50.325 ms
64 bytes from 139.199.62.115: icmp_seq=9 ttl=229 time=37.974 ms
64 bytes from 139.199.62.115: icmp_seq=10 ttl=229 time=38.712 ms
64 bytes from 139.199.62.115: icmp_seq=11 ttl=229 time=50.818 ms
64 bytes from 139.199.62.115: icmp_seq=12 ttl=229 time=39.310 ms
上述:PING 160b2b1e.nat123.cc (139.199.62.115): 56 data bytes
,139.199.62.115就是域名对应的外网IP。
- ssh连接
ssh aliceyu@139.199.62.115 -p 13604
AliceYudeMacBook-Pro:~ alice$ ssh aliceyu@139.199.62.115 -p 13604
aliceyu@139.199.62.115's password:
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-51-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
148 个可升级软件包。
0 个安全更新。
New release '18.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
*** 需要重启系统 ***
Last login: Wed Jun 26 21:35:04 2019 from 192.168.124.23
aliceyu@aliceyu-virtual-machine:~$ ls
core Downloads Files ncbi Templates
Desktop examples.desktop igv Public vmware-root
aliceyu@aliceyu-virtual-machine:~$