外网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. 虚拟网络编辑器
image.png

虚拟网络编辑器

在 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

    • 添加端口转发:
image.png
**屏幕快照 2019-06-26 下午 8.35.22**

- 设置端口转发
image.png

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

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

3. 测试

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

打开 SecureCRT 软件,进行配置:

image.png

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

[图片上传失败...(image-409a79-1698149661629)]

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

PassWord 为我们 Ubuntu 的登录密码

image.png

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

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

3 使用nat123达到内网穿透

nat 相关操作

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

image.png

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

image.png

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

image.png

这是官网的教程:

image.png

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

image.png

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

其它内网穿透工具

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容