无法通过VS Code连接Azure Ubuntu VM:公钥权限拒绝问题求助
问题:VS Code SSH连接Azure Ubuntu 18.04虚拟机失败(Permission denied(Public key))
使用.ppk文件可通过Putty正常连接Azure虚拟机,但通过VS Code的SSH配置文件使用.ppk或.pem文件连接时,均出现错误:Permission denied(Public key)。
SSH日志
root@VMWDEPOCEUS001:/var/log# tail -30 auth.log Oct 27 10:19:12 VMWDEPOCEUS001 sshd[3087]: Failed password for invalid user ssh user from 156.163.33.75 port 56425 ssh2 Oct 27 10:19:14 VMWDEPOCEUS001 sshd[3087]: Failed password for invalid user ssh user from 156.163.33.75 port 56425 ssh2 Oct 27 10:19:15 VMWDEPOCEUS001 sshd[3087]: Connection reset by invalid user ssh user 156.163.33.75 port 56425 [preauth] Oct 27 10:23:52 VMWDEPOCEUS001 sshd[3095]: Invalid user ssh user1 from 156.163.33.75 port 56590 Oct 27 10:23:57 VMWDEPOCEUS001 sshd[3095]: Failed none for invalid user ssh user1 from 156.163.33.75 port 56590 ssh2 Oct 27 10:24:00 VMWDEPOCEUS001 sshd[3095]: Failed password for invalid user ssh user1 from 156.163.33.75 port 56590 ssh2 Oct 27 10:24:04 VMWDEPOCEUS001 sshd[3095]: Failed password for invalid user ssh user1 from 156.163.33.75 port 56590 ssh2 Oct 27 10:24:05 VMWDEPOCEUS001 sshd[3095]: Connection reset by invalid user ssh user1 156.163.33.75 port 56590 [preauth] Oct 27 10:25:26 VMWDEPOCEUS001 sshd[3099]: Accepted password for user1 from 156.163.33.75 port 56649 ssh2 Oct 27 10:25:26 VMWDEPOCEUS001 sshd[3099]: pam_unix(sshd:session): session opened for user user1 by (uid=0) Oct 27 10:25:26 VMWDEPOCEUS001 systemd-logind[1238]: New session 6 of user user1. Oct 27 10:25:28 VMWDEPOCEUS001 sshd[3167]: Accepted password for user1 from 156.163.33.75 port 56651 ssh2 Oct 27 10:25:28 VMWDEPOCEUS001 sshd[3167]: pam_unix(sshd:session): session opened for user user1 by (uid=0) Oct 27 10:25:28 VMWDEPOCEUS001 systemd-logind[1238]: New session 7 of user user1. Oct 27 10:27:00 VMWDEPOCEUS001 sshd[3258]: Invalid user ssh user1 from 156.163.33.75 port 26689 Oct 27 10:27:14 VMWDEPOCEUS001 sshd[3258]: pam_unix(sshd:auth): check pass; user unknown Oct 27 10:27:14 VMWDEPOCEUS001 sshd[3258]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=156.163.33.75 Oct 27 10:27:16 VMWDEPOCEUS001 sshd[3258]: Failed password for invalid user ssh user1 from 156.163.33.75 port 26689 ssh2 Oct 27 10:27:30 VMWDEPOCEUS001 sshd[3258]: pam_unix(sshd:auth): check pass; user unknown Oct 27 10:27:33 VMWDEPOCEUS001 sshd[3258]: Failed password for invalid user ssh user1 from 156.163.33.75 port 26689 ssh2 Oct 27 10:27:47 VMWDEPOCEUS001 sshd[3258]: pam_unix(sshd:auth): check pass; user unknown Oct 27 10:27:49 VMWDEPOCEUS001 sshd[3258]: Failed password for invalid user ssh user1 from 156.163.33.75 port 26689 ssh2 Oct 27 10:27:49 VMWDEPOCEUS001 sshd[3258]: Connection reset by invalid user ssh user1 156.163.33.75 port 26689 [preauth] Oct 27 10:27:49 VMWDEPOCEUS001 sshd[3258]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=156.163.33.75 Oct 27 10:31:22 VMWDEPOCEUS001 sshd[3279]: Invalid user ssh user1 from 156.163.33.75 port 56826 Oct 27 10:31:34 VMWDEPOCEUS001 sshd[3279]: pam_unix(sshd:auth): check pass; user unknown Oct 27 10:31:34 VMWDEPOCEUS001 sshd[3279]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=156.163.33.75 Oct 27 10:31:35 VMWDEPOCEUS001 sshd[3279]: Failed password for invalid user ssh user1 from 156.163.33.75 port 56826 ssh2 Oct 27 10:32:09 VMWDEPOCEUS001 sshd[3279]: pam_unix(sshd:auth): check pass; user unknown Oct 27 10:32:10 VMWDEPOCEUS001 sshd[3279]: Failed password for invalid user ssh user1 from 156.163.33.75 port 56826 ssh2
问题分析
从日志可以看到,VS Code发起的连接尝试中,使用的用户名是ssh user1,但系统中实际存在的有效用户名是user1(日志10:25:26处有Accepted password for user1的成功记录),这说明SSH配置文件里的用户名配置错误,多了"ssh "前缀。另外,VS Code的SSH客户端不直接支持.ppk格式密钥,需要转换成OpenSSH兼容的.pem格式。
解决方案
修正SSH配置文件中的用户名
- 打开VS Code的SSH配置文件(可通过Remote-SSH插件的"Open SSH Configuration File"选项打开,或直接编辑本地
~/.ssh/config文件) - 找到对应Azure虚拟机的Host配置块,确保
User字段为正确的用户名user1,而非带前缀的"ssh user1"
- 打开VS Code的SSH配置文件(可通过Remote-SSH插件的"Open SSH Configuration File"选项打开,或直接编辑本地
将.ppk密钥转换为OpenSSH兼容格式
- 用Puttygen打开你的.ppk文件
- 点击菜单栏
Conversions->Export OpenSSH key,将密钥保存为.pem格式文件 - 修改.pem文件的权限(必须设置为600,否则SSH会拒绝使用):
chmod 600 /path/to/your/converted-key.pem
更新SSH配置的密钥路径
在Host配置块中指定转换后的.pem文件路径,示例配置:Host azure-ubuntu-vm HostName <你的虚拟机IP或域名> User user1 IdentityFile /path/to/your/converted-key.pem重新尝试连接
在VS Code的Remote-SSH插件中选择配置好的Host,发起连接即可。
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

