【VMware】ssh连接deepin虚拟机
ssh连接linux虚拟机,以deepin20.3为例
1.VMWare 虚拟网卡配置
VMWare虚拟机常用的网络链接方式有下面这3种
- 桥接(最方便)
- nat(需要设置端口映射)
- 仅主机(无法联网)
在我的测试中,不管用上面哪种方式安装,都是可以直接查询IP后,进行ssh连接的。
需要注意是,如果你所在的环境没有你可以直接管理的路由器(比如校园网)那就不要选择桥接模式,不然你的Linux虚拟机可能因为没有登陆校园网而无法上网;这时候建议选择NAT模式!
- 桥接模式:以当前主机为桥,直接接入上级路由器;此时虚拟机会作为一个普通设备接入局域网,可以被局域网内的其他电脑直接访问;
- NAT模式:借用当前主机的端口进行互联网访问,此时虚拟机并没有直接接入局域网,如果其他局域网内设备想访问虚拟机,必须设置端口映射;当前主机可以正常通过虚拟机的IP访问到虚拟机。
- 仅主机模式:只有当前主机能访问到虚拟机,且该虚拟机无法上网;
如下便是我安装(创建)虚拟机时,选择桥接网络的截图。
顺带提一嘴,安装deepin虚拟机的时候,环境选择ubuntu 64位
就可以了,并不需要去搜deepin基于debain的版本号(而且我也没搜到)
2.安装 openssh
在 虚拟机 中执行:
sudo apt install openssh-client openssh-server
sudo /etc/init.d/ssh restart
我安装的是deepin20.3
,自带了这两个软件包,所以只需要执行重启一下ssh,保证服务正常就行了
1 | $ sudo apt install openssh-client openssh-server |
而在centos8中,openssh-server
也是自带了,不需要安装,启动就行了
1 | systemctl start sshd |
3.查询虚拟机 IP
在 Linux 虚拟机 中执行:
1 | ifconfig |
找到 ens33 下的 IPv4 地址,记下来(你的虚拟机里面可能不是33,这不重要)
4.设置端口转发
咳咳,我发现原来NAT在虚拟机里面查询到的那个IP也是可以直接链接的,所以设置端口转发也是没有必要的🤣!除非你想要让局域网内的其他机器链接到你这个虚拟机里面的服务。
所以这一步是可以跳过的;不过记录下来,如果你有这个需求就可以根据教程设置一下。
在 VMWare Workstation 中:
1 | 菜单栏 → 编辑 → 虚拟网络编辑器 → VMNet8 -> 更改设置 → NAT 设置 → 添加端口转发 |
需要提供管理员权限,在弹出的窗口中选确定
确定了管理员权限后,再选择VMnet8,点击NAT设置
点击添加端口转发
进入映射传入端口
界面后,按下面填写
- 主机端口:是你当前宿主机的本机端口,可以随便填一个;但要保证不要和windows已有的本地端口冲突。端口号范围是
0~65535
,建议选用5位数的不常用端口! - 虚拟机IP地址:使用
ifconfig
查到的虚拟机ip - 虚拟机端口:22(ssh默认端口)
确定,并点击虚拟网络编辑器
中的应用(或者确定)按钮;
5.开放防火墙
在 deepin 虚拟机 中执行:
sudo ufw allow ssh
如果ufw命令找不到,那就安装一下这个命令
1 | $ sudo ufw allow ssh |
1 | $ sudo apt-get install ufw |
再执行一下,显示的结果如下。此时就已经ok了
1 | $ sudo ufw allow ssh |
6.连接测试
这是ssh连接的通用格式,默认的ssh端口是22
1 | ssh 用户名@虚拟机ip |
如果是nat端口映射,需要指定ip,就在后方添加-p
选择端口;假设你设置了NAT虚拟机22端口到主机2222端口的NAT映射,那就可以使用如下命令进行链接,因为映射到了本地,所以IP我们可以填localhost
或者127.0.0.1
代表本机的本地IP,二者是等价的
1 | ssh 用户名@localhost -p 2222 |
在windows的cmd中执行如下命令,就能连上你的虚拟机
1 | PS C:\Users\moth> ssh mothra@192.168.6.113 |
当然,你也可以选择使用其他ssh终端来链接,具体方法根据终端软件百度教程就行了。
7.生成 ssh 密钥对(选做)
在 宿主机 (Windows) 执行:
ssh-keygen
敲回车直到执行完成(已有公钥可跳过此步)
在 宿主机 (Windows) 中用 Powershell 执行:
cat ~/.ssh/id_rsa.pub | ssh 虚拟机用户名@虚拟机IP "cat >> ~/.ssh/authorized_keys"
命令中的虚拟机用户名用你在虚拟机中创建的linux用户名替换;
虚拟机IP用刚刚第3步中查到的虚拟机IP替换(刚刚背诵的);
输入密码即可!
配置了ssh密钥后,无需键入密码即可连接(如果你使用vscode来ssh链接虚拟机,这点很重要,非常省事)
ssh 虚拟机用户名@虚拟机IP