外网SSH连接内网Windows上linux虚拟机

需求

外网SSH连接学校内网的Windows科研电脑上的linux虚拟机

思路

学校网络之外的外网机器 SSH远程连接 内网电脑对应的外网IP,内网电脑接受到外网SSH连接请求,再通过虚拟机的NAT模式(端口转发模式),即宿主PC机转发外网SSH请求到虚拟机对应的端口号,间接的访问虚拟机的Linux。

prerequisite

有了思路,我们需要做的准备

  1. VMware的网络连接选择NAT模式—>达到转发SSH请求到虚拟机的效果
  2. 虚拟机要有对应的SSH服务—>sudo apt-get install openssh-server
  3. 使用nat123达到内网穿透

知识补充

学校内网的ip实际上网络经过了很多中间层的映射,而这个映射很复杂的,学校也不可能告诉我们,所以不可以或者很难直接用内网IP映射成外网IP,进而提供SSH服务。

但是我们可以使用工具,如nat123、神卓互联、花生壳等,将学校内网IP直接映射成外网IP

let’s start

1 设置VMware

  1. 虚拟网络编辑器

虚拟网络编辑器

在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

  1. 设置NAT

    • 添加端口转发:

    屏幕快照 2019-06-26 下午8.35.22

    • 设置端口转发

    屏幕快照 2019-06-26 下午9.06.55

到现在为止,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,如图所示:

屏幕快照 2019-06-26 下午8.47.47

  • 设置完需ssh配置文件,我们需要要重启ssh服务,命令 service sshd restart 或者 /etc/initd.d/sshd restart

3. 测试

在Windows宿主机上下载SecureCRT软件。

打开SecureCRT软件,进行配置:

屏幕快照 2019-06-26 下午9.12.05

ProtoCol模式选为 SSH2,Port为 22(前面NAT设置等虚拟机端口号),HostName为192.168.124.23(那就是我们宿主PC机的IP地址),UserName为我们Ubuntu的登录账户。

屏幕快照 2019-06-26 下午9.13.51

PassWord为我们Ubuntu的登录密码

屏幕快照 2019-06-26 下午9.14.29

配置完成后,如果成功,会进入虚拟机的界面

到现在为止,我们已经完成了Windows宿主机通过虚拟机NAT模式转发SSH请求到虚拟机,并且虚拟机支持openssh-server操作。接下来就剩下最后一步:将windows宿主机的内网IP(就是例子中的192.168.124.23)映射到外网。

3 使用nat123达到内网穿透

nat相关操作

在宿主机上下载nat123程序 ,使用自己的帐号登录。如没有帐号,可以“注册帐号”进入网站进行注册。

屏幕快照 2019-06-26 下午9.21.33

主面板/端口映射列表/添加映射

屏幕快照 2019-06-26 下午9.24.47

设置映射信息。选择非网站应用映射类型。填写内网LINUX地址端口,和外网访问的域名。可以使用自己的域名,也可以使用免费二级域名。外网端口在添加映射时,会自动分配一个可用端口,不用更改。将鼠标放在输入框有向导提示。

屏幕快照 2019-06-26 下午9.37.17

这是官网的教程:

屏幕快照 2019-06-26 下午9.27.54

添加映射后,可查看映射状态。将鼠标放在映射图标上有提示当着状态信息。新添加映射一般几分钟内生效。

屏幕快照 2019-06-26 下午9.40.31

4 进行SSH连接

用处在外网的电脑连接

命令行输入:

ssh aliceyu@160b2b1e.nat123.cc -p 13604

解释:

aliceyu:虚拟机用户名
160b2b1e.nat123.cc:nat123随机分配的域名
-p 13604:指定的服务端口号,也是nat123分配的

其实还有一种连接方式:

  1. 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。

  1. 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:~$ 

参考

SSH安装篇之——SecureCRT连接(内网和外网)虚拟机中的Linux系统(Ubuntu)

外网SSH访问内网LINUX-非网站应用映射方法


   转载规则


《外网SSH连接内网Windows上linux虚拟机》 徐兴华 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录
I I