> 技术文档 > 【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机

【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机


步骤一:用ifconfig命令查看虚拟机ip地址,如图为192.168.217.128,(如果提示ifconfig命令不存在,按提示安装即可)

【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机

步骤二:建立ip映射

打开VMware的虚拟网络编辑器(编辑>虚拟网络编辑器):
依次点击:更改设置,选择VMnet8,进入NAT设置
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
进入NAT设置后:
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
点击添加:
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
依次填入:

  1. 主机端口:填写默认22即可
  2. 类型:TCP
  3. 虚拟机IP地址:之前在虚拟机里查到的192.168.217.128
  4. 虚拟机端口:填写默认的22即可

步骤三:配置虚拟机ssh服务

1.在虚拟机上安装opensshsudo apt-get install openssh-client openssh-server2.启动ssh-serversudo /etc/init.d/ssh restart3.确认ssh-server工作正常sudo systemctl status sshd

正常工作如下图所示:
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机

步骤四:检查虚拟机防火墙

1.查看防火墙是否启用sudo ufw status2.如果防火墙启用,确保允许 22 端口:sudo ufw allow 22

如图所示:
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机

步骤五:开始连接

示例1:使用命令行连接

如图输入你的虚拟机用户名和虚拟机ip地址:ssh xukun@192.168.217.128(改为你自己的),然后输入虚拟机的用户密码,即可进入。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机

示例2:使用Moba连接

【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
如图,依次输入虚拟机ip地址、用户名、端口号即可。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
输入密码。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
成功进入!

示例三:使用vscode连接

选择左下角的蓝色图标,然后正上方中央可以选择连接方式,我们选择ssh连接,第一次使用会自动安装ssh扩展。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
安装完成后,点击第一个Connect to Host
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
选择添加新的ssh主机
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
然后和示例一的在命令行连接时的命令一样,最后加上-A
输入你的虚拟机用户名和虚拟机ip地址:
ssh xukun@192.168.217.128 -A(改为你自己的)。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
我们再次点击左下角,再点击Connect to Host,可以看到刚刚添加的虚拟机地址。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
点击配置SSH主机,我们可以更改刚刚命令所创建的虚拟机ip的ssh配置文件。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
点击第一个(我的用户名是xukun),也就是ssh xukun@192.168.217.128 -A 这里的名字。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
进入后可以看到,各个参数,我们修改Host,命名为方便区分的名字,我改为了Ubuntu 22.04。
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
选择Ubuntu22.04后,选择系统为Linux
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
然后输入密码:
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
成功连接!
【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机

步骤六:进阶:使用使用 SSH 密钥保持连接

使用 SSH 密钥连接远程机器进行工作时如何保持连接,并且让终端能够复用。不再为了仅执行个别命令 总是打开许多命令行终端。不再每次连接都总输入密码。不再因为网络断开或必须重启笔记本时 就丢失全部上下文。

要实现每次连接时不输入密码,你需要配置 SSH 使用 密钥认证,而不是每次手动输入密码。可以通过以下步骤来实现:

1. 生成 SSH 密钥对

首先,你需要生成一对 SSH 密钥(如果你还没有的话)。

  1. 打开命令行终端(Windows 你可以使用 PowerShell 或 Git Bash)。

  2. 运行以下命令生成 SSH 密钥对:

    ssh-keygen -t ed25519 -C \"your_email@example.com\"

    这个命令会生成一对公私钥,默认保存在 ~/.ssh 目录下(在 Windows 上通常是 C:\\Users\\你的用户名\\.ssh\\)。如果提示输入文件名,可以直接按 Enter(使用默认文件名 id_ed25519)。

  3. 在提示输入密码时,你可以选择设置一个密码短语,也可以直接按 Enter 跳过。

2. 将公钥上传到远程服务器(或虚拟机)

将生成的公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中。你可以使用 ssh-copy-id 命令来简化这个过程:

ssh-copy-id xukun@192.168.217.128

这会将你的公钥添加到目标机器的 ~/.ssh/authorized_keys 文件中。如果你没有安装 ssh-copy-id,你也可以手动将公钥内容复制到目标机器上的 ~/.ssh/authorized_keys 文件。

如果没有该文件,可以手动创建它:

  1. 通过 SSH 登录到目标服务器。

  2. 在目标机器上运行:

    mkdir -p ~/.sshtouch ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
  3. 然后,将本地的公钥(通常是 ~/.ssh/id_ed25519.pub)的内容复制到远程机器的 ~/.ssh/authorized_keys 文件中。

3. 配置 ~/.ssh/config 文件

在本地机器上配置 ~/.ssh/config 文件(如果没有该文件,自己创建一个),以便 SSH 自动使用密钥并且简化连接命令。

例如,你可以在 ~/.ssh/config 中添加以下内容:

Host Ubuntu22.04 HostName 192.168.217.128 User xukun ForwardAgent yes IdentityFile ~/.ssh/id_ed25519

其中:

  • Host 是一个你为这个连接设置的别名,方便记住。
  • HostName 是你要连接的远程机器的 IP 地址。
  • User 是你要使用的用户名。
  • ForwardAgent 是一个用于代理的设置,一般不需要修改。
  • IdentityFile 指定了你本地的私钥文件(通常是 ~/.ssh/id_ed25519)。

4. 验证免密登录

完成上述配置后,你可以尝试通过以下命令进行连接:

ssh Ubuntu22.04

如果一切配置正确,SSH 会使用你的密钥进行认证,你将不再需要输入密码。

小提示:

  • 如果你在 Windows 上使用 Git Bash 或 WSL,可以确保 SSH 密钥文件权限正确。
  • 确保 sshd_config 文件(在远程服务器上)允许使用密钥认证。可以通过检查远程机器的 /etc/ssh/sshd_config 文件,确保以下两行没有被注释掉:
    PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys

如果配置正确,你的每次连接应该都会使用 SSH 密钥进行免密码登录。