Azure Ubuntu虚拟机SSH登录提示Permission denied (publickey),用户名密码登录配置遇阻求助
Azure Ubuntu虚拟机SSH登录提示Permission denied (publickey),用户名密码登录配置遇阻求助
嘿,太懂这种明明按步骤操作却卡壳的烦躁了!结合你描述的情况——证书(SSH密钥)登录正常,但用户名密码登录一直报Permission denied (publickey),大概率是SSH服务端还没开启密码认证选项,加上Azure环境的一些默认配置,我帮你梳理几个必查的点:
一、先确认Ubuntu虚拟机上的SSH服务配置
先通过已能正常使用的证书登录进VM,然后做这些检查:
给
myuser设置密码(这步超容易忘!)
执行命令:sudo passwd myuser跟着提示输入并确认密码即可。
修改SSH服务配置文件,允许密码登录
打开配置文件:sudo nano /etc/ssh/sshd_config找到以下几个关键配置项,调整成对应值:
PasswordAuthentication yes(去掉前面的注释符号,把值改成yes)ChallengeResponseAuthentication no(保持默认或改成no,避免干扰密码认证)PubkeyAuthentication yes(这个可以保留,这样密钥登录依然能用,密码登录也能开启)
要是找不到PasswordAuthentication,直接在文件末尾添加这一行也可以。
重启SSH服务让配置生效
sudo systemctl restart sshd
二、Azure层面的额外检查
虽然你密钥登录正常,但还是确认下这两个点:
- 网络安全组(NSG):确保NSG的入站规则允许22端口(SSH)的流量(既然密钥能登,这个大概率没问题,但以防万一)。
- Azure VM的登录限制:在Azure门户里找到你的VM,进入「配置」→「SSH密钥」,确认有没有强制要求仅用密钥登录的设置。如果有,改成允许密码登录;也可以用Azure CLI执行命令修改:
az vm update --resource-group <你的资源组名> --name <VM名称> --set osProfile.linuxConfiguration.disablePasswordAuthentication=false
三、macOS本地的连接测试
现在在mylocal上尝试用密码登录:
ssh myuser@thatIP
如果还是报错,加-v参数看详细日志,能帮你精准定位问题:
ssh -v myuser@thatIP
日志里会显示服务端允许的认证方式,如果看到只有publickey,说明前面的sshd配置没生效,回去检查配置文件有没有写错,或者服务有没有重启成功。
四、顺便修复手动复制公钥后的密钥登录问题(如果需要的话)
你之前手动传公钥后密钥登录失败,大概率是权限问题——SSH对.ssh目录和文件的权限要求很严格:
登录myuser账户,执行以下命令修正权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys sudo chown -R myuser:myuser ~/.ssh
权限不对的话,SSH服务会拒绝读取公钥文件,自然会登录失败。
按照这些步骤来,应该能解决密码登录的问题,如果还有卡壳的地方,把ssh -v的日志片段贴出来,能更精准排查!
备注:内容来源于stack exchange,提问作者Max Wyss
相关产品推荐
相关产品推荐

