SSH连接
想用windows主机ssh连接虚拟机,连不上。
确保 SSH 服务已安装并运行
虽然Ubuntu系统自带了ssh,但是这是客户端的,服务端的openssh-server没有安装。
1 | # 检查服务状态 |
检查SSH端口监听
1 | sudo netstat -tuln | grep :22 |
- 正常应显示:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
- 若未监听,修改配置:
sudo nano /etc/ssh/sshd_config
确保存在:
1 | Port 22 |
重启SSH服务
1 | sudo systemctl restart ssh |
VSCode远程连接
在Extensions中搜索Remote,安装Remote Development。
之后左边就会多出一个选项:
点击后,在边栏右上角选择Remotes(SSH)
然后点SSH栏右边的齿轮。
上边栏就会出现:
我们选择第一个,也是Windows下当前用户默认的ssh配置文件夹。
在里面配置远程主机的连接信息
Host指主机名,Linux中@后面的就是。
HostName指ip地址。Linux下ifconfig可以查看。
User指@前面的。
保存文件之后,左边栏就会出现:
SSH远程连接虚拟机 怎么用公钥免除每次登录输入密码的烦恼
生成密钥对(主机操作)
打开终端(Windows 使用 PowerShell 或 CMD;Mac/Linux 用系统终端)
生成密钥:
1 | ssh-keygen -t ed25519 -C "your_email@example.com" # 推荐 ed25519 |
按提示完成(默认保存位置 ~/.ssh/id_ed25519
)
复制公钥到虚拟机
方法一:自动复制(推荐)(主机操作)
1 | ssh-copy-id -i ~/.ssh/id_ed25519.pub user@vm_ip |
方法二:手动复制
1 | cat ~/.ssh/id_ed25519.pub # 查看主机上的公钥内容 |
配置主机的VSCode
按 F1
> 选择 Remote-SSH: Connect to Host...
选择 Configure SSH Hosts...
> 添加配置:(其实是帮你打开~/.ssh/config
)
1 | Host MyVM # 自定义别名 |
保存配置文件(通常是 ~/.ssh/config
)
常见问题解决
- 权限错误:
chmod 600 ~/.ssh/config # 确保本地 config 文件权限正确
- 服务端配置检查:
- 确认虚拟机
/etc/ssh/sshd_config
包含:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
- 重启 SSH 服务:
sudo systemctl restart sshd
- 确认虚拟机
- 调试连接:
ssh -Tv user@vm_ip # -v 查看详细日志
✅ 成功标志:使用
ssh user@vm_ip
或 VSCode 连接时无需输入密码即可登录。
遇到问题建议检查两边日志(本地终端 debug 信息或虚拟机/var/log/auth.log
)