美文网首页
外网SSH连接内网Windows上linux虚拟机

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

作者: Yobhel | 来源:发表于2023-10-23 20:10 被阅读0次

需求

外网 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

相关文章

  • putty

    参考:putty连接不上虚拟机的时候,可考虑在虚拟机装ssh,本机(windows)上也需要装上ssh Linux...

  • 使用SSH连接虚拟机

    如何使用SSH连接虚拟机 使用SSH连接虚拟机有诸多好处,可以让你随心所欲进行windows和linux之间的代码...

  • 网络安全-Day52-内网到外网lcx试验

    内网到外网lcx试验 介绍:通过lcx工具解决内网远程连接 1、把lcx文件上传到虚拟机 2、Webshell上执...

  • 利用反向代理实现内网的ssh连接

    内容实现了再补 参考文章:SSH如何反向代理稳定穿透内网利用ssh反向代理以及autossh实现从外网连接内网服务器

  • 如何在内网安装grafana与grfana-zabbix插件

    内网不上连接外网,必须要以脱机方式安装。 一、 安装grafana:复制grafana-4.6.3.linux-x...

  • 网络安全-Day52-内网横向渗透测试

    内网横向渗透测试 环境准备 1、虚拟机1:windows7:两张网卡,一张连外网,一张连内网 2、虚拟机2:ser...

  • Linux知识积累

    SSH连接 ssh通过跳板机连接内网服务器,发现能ping通连接不上,检查了/etc /ssh/ssh_confi...

  • centos7 ssh连接不上

    问题描述 内网创建了一台虚拟机,网络都是通的,虚拟机的ssh服务也是启动的,但是其他机器不能通过ssh连接虚拟机。...

  • windows下xshell隧道Remote(Incoming)

    1. 使用场景 如上图 1. 主机A为linux在内网且无法上外网; 2. 主机B为windows,配置有双网卡,...

  • 2022-08-03网卡切换

    思路 公司内网、外网不允许同时使用,经常的切换。内网是有线连接,外网是通过无线网卡连接。连接内网时,无线网卡需要禁...

网友评论

      本文标题:外网SSH连接内网Windows上linux虚拟机

      本文链接:https://www.haomeiwen.com/subject/hryjidtx.html