xshell远程访问另一台电脑的ubuntu虚拟机,实现方式(关键在于虚拟机端口映射转发与win防火墙设置)

本文主要是介绍xshell远程访问另一台电脑的ubuntu虚拟机,实现方式(关键在于虚拟机端口映射转发与win防火墙设置),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题自述:
我有两台win系统的电脑,命名为访问机宿主机(用于安装ubuntu虚拟机),两台电脑都可以正常上网。目的是要使用访问机的xshell直接连接宿主机的ubuntu虚拟机。

下面是步骤

1,首先你要有两台win系统的电脑,其中一台(宿主机)上已安装了vmware,并通过vmware安装了ubuntu虚拟机(安装方法网上随便搜都有)

2.进入ubuntu虚拟机,安装ssh:引用自(如何在ubuntu上安装ssh服务)

在Ubuntu上启用SSH
默认情况下,当你安装完Ubuntu系统后,系统是不允许通过SSH进行远程访问的,您需要安装OpenSSH并启用它。

安装方法很简单,你需要以root或者具备sudo权限的帐号按以下步骤安装并启用SSH。

打开终端安装openssh-server软件包:

bash sudo apt updatesudo apt install openssh-server

出现提示时,输入密码,然后按Enter继续安装。 安装完成后,SSH服务默认自动启动,你可以通过以下命令校验服务运行状态:

bash sudo systemctl status ssh

命令执行后,输出内容类似如下:

output ● ssh.service - OpenBSD Secure Shell server Loaded: loaded
(/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-06-09 12:34:00 CEST; 9h ago

按q退出返回命令行提示符。

Ubuntu 默认使用 ufw 防火墙配置工具,如果你启用了防火墙,请确保防火墙打开了 SSH 端口,命令如下:

bash sudo ufw allow ssh

至此,你可以通过SSH远程连接到你的Ubuntu系统了。Linux 和 macOS 系统默认安装了 SSH 客户端。
要从Windows计算机连接,请使用SSH客户端,例如PuTTY。

3.查看ubuntu的IP地址

打开ubuntu终端,输入ifconfig查看虚拟机的IP地址:
在这里插入图片描述
将这一串192.168.xxx.xxx记为虚拟机ip

4.查看宿主机的公网ip地址

打开宿主机,也就是装有ubuntu虚拟机的windows系统的浏览器,搜索“我的ip”,点击第一个链接就是。我用的是https://ip.cn/
在这里插入图片描述
将这一串地址记为宿主机ip

4.设置ubuntu虚拟机的NAT网络端口映射(端口转发)

编辑虚拟机的网络
在这里插入图片描述
选择NAT模式,点击NAT设置
在这里插入图片描述
点击添加
在这里插入图片描述
重点来了,在这里的主机端口设定一个你喜欢的端口号,记为主机端口,建议6666或其他,这个号必须是不能被宿主机占用的(不要输入22等常用端口,很有可能已被占用)。
在虚拟机ip地址一栏输入刚刚查看到的虚拟机ip
虚拟机端口一栏填写22(这个是ubuntu内部ssh的默认端口)
在这里插入图片描述

5.在宿主机的防火墙添加准入端口

打开宿主机的控制面板,搜索防火墙,点击高级设置
在这里插入图片描述
在这里插入图片描述
点击入站规则-新建规则,按下面图片提示设置新的入站规则
在这里插入图片描述
输入你刚刚设定的主机端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为该规则写一个合适的名称
在这里插入图片描述

6.使用访问机的xshell链接宿主机的虚拟机ubuntu

打开访问机的xshell,新建会话。主机那里输入宿主机ip注意不是虚拟机ip,端口号填写刚刚自己设定的主机端口
在这里插入图片描述
点击连接,输入ubuntu的账号密码,即可顺利连上
在这里插入图片描述
在这里插入图片描述

一些杂谈

在网上找了好久都没找到合适的方法,弄了好几天总算有了眉目,最后成功连上。关键步骤还是在设置虚拟机的端口转发和宿主机的防火墙准入。感谢这篇文章提供的方法:VMware虚拟机配置端口转发(端口映射),实现远程访问

还有,本方法的奇怪之处在于,两台电脑不能ping通(访问机ping宿主机ip失败),但能建立ssh连接。我的两台电脑是都是连的校园网拨号上网。但是如果一台连的校园网,一台连的手机热点,就不能建立ssh连接(感觉还是得在同一局域网下才可以)。如果想要通过公网访问内网的服务器,可能需要再设置一个内网穿透,详见知乎:如何从外网SSH连接内网服务器? 这个我还没实践过

最后,如果帮到了你,记得点个赞

这篇关于xshell远程访问另一台电脑的ubuntu虚拟机,实现方式(关键在于虚拟机端口映射转发与win防火墙设置)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158596

相关文章

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景