【工具配置】Windows11通过ssh连接到VMware虚拟机(命令行,Moba,VScode)_ssh连接虚拟机
步骤一:用ifconfig命令查看虚拟机ip地址,如图为192.168.217.128,(如果提示ifconfig命令不存在,按提示安装即可)
步骤二:建立ip映射
打开VMware的虚拟网络编辑器(编辑>虚拟网络编辑器):
依次点击:更改设置,选择VMnet8,进入NAT设置
进入NAT设置后:
点击添加:
依次填入:
- 主机端口:填写默认22即可
- 类型:TCP
- 虚拟机IP地址:之前在虚拟机里查到的192.168.217.128
- 虚拟机端口:填写默认的22即可
步骤三:配置虚拟机ssh服务
1.在虚拟机上安装opensshsudo apt-get install openssh-client openssh-server2.启动ssh-serversudo /etc/init.d/ssh restart3.确认ssh-server工作正常sudo systemctl status sshd
正常工作如下图所示:
步骤四:检查虚拟机防火墙
1.查看防火墙是否启用sudo ufw status2.如果防火墙启用,确保允许 22 端口:sudo ufw allow 22
如图所示:
步骤五:开始连接
示例1:使用命令行连接
如图输入你的虚拟机用户名和虚拟机ip地址:ssh xukun@192.168.217.128(改为你自己的),然后输入虚拟机的用户密码,即可进入。
示例2:使用Moba连接
如图,依次输入虚拟机ip地址、用户名、端口号即可。
输入密码。
成功进入!
示例三:使用vscode连接
选择左下角的蓝色图标,然后正上方中央可以选择连接方式,我们选择ssh连接,第一次使用会自动安装ssh扩展。
安装完成后,点击第一个Connect to Host
选择添加新的ssh主机
然后和示例一的在命令行连接时的命令一样,最后加上-A:
输入你的虚拟机用户名和虚拟机ip地址:
ssh xukun@192.168.217.128 -A(改为你自己的)。
我们再次点击左下角,再点击Connect to Host,可以看到刚刚添加的虚拟机地址。
点击配置SSH主机,我们可以更改刚刚命令所创建的虚拟机ip的ssh配置文件。
点击第一个(我的用户名是xukun),也就是ssh xukun@192.168.217.128 -A 这里的名字。
进入后可以看到,各个参数,我们修改Host,命名为方便区分的名字,我改为了Ubuntu 22.04。
选择Ubuntu22.04后,选择系统为Linux
然后输入密码:
成功连接!
步骤六:进阶:使用使用 SSH 密钥保持连接
使用 SSH 密钥连接远程机器进行工作时如何保持连接,并且让终端能够复用。不再为了仅执行个别命令 总是打开许多命令行终端。不再每次连接都总输入密码。不再因为网络断开或必须重启笔记本时 就丢失全部上下文。
要实现每次连接时不输入密码,你需要配置 SSH 使用 密钥认证,而不是每次手动输入密码。可以通过以下步骤来实现:
1. 生成 SSH 密钥对
首先,你需要生成一对 SSH 密钥(如果你还没有的话)。
-
打开命令行终端(Windows 你可以使用 PowerShell 或 Git Bash)。
-
运行以下命令生成 SSH 密钥对:
ssh-keygen -t ed25519 -C \"your_email@example.com\"
这个命令会生成一对公私钥,默认保存在
~/.ssh
目录下(在 Windows 上通常是C:\\Users\\你的用户名\\.ssh\\
)。如果提示输入文件名,可以直接按 Enter(使用默认文件名id_ed25519
)。 -
在提示输入密码时,你可以选择设置一个密码短语,也可以直接按 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
文件。
如果没有该文件,可以手动创建它:
-
通过 SSH 登录到目标服务器。
-
在目标机器上运行:
mkdir -p ~/.sshtouch ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
-
然后,将本地的公钥(通常是
~/.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 密钥进行免密码登录。