AWS Ubuntu实例创建deploy用户,密码SSH登录遇权限拒绝如何解决?
需求完全可行!以下是分步解决方法
首先明确:通过密码SSH登录Ubuntu实例是完全可行的,你遇到的"Permission denied (public key)"提示,本质是Ubuntu默认禁用了密码登录认证,再加上SSH会优先尝试公钥认证导致的。按下面的步骤操作就能解决问题:
1. 修改SSH服务配置文件
先用ubuntu用户登录实例,编辑SSH的核心配置文件:
sudo nano /etc/ssh/sshd_config
在文件中找到以下关键配置项,做对应修改(如果配置项不存在就直接添加):
- 将
PasswordAuthentication no改为PasswordAuthentication yes - 确保
ChallengeResponseAuthentication yes(新版Ubuntu通常默认已开启,若设为no则改成yes) - 保留
PubkeyAuthentication yes(这不会影响原ubuntu用户用pem密钥登录)
额外注意:如果配置文件里有
AllowUsers项,一定要把deploy添加进去,比如改成AllowUsers ubuntu deploy,否则该用户会被直接拒绝登录;如果有DenyUsers项,要确保deploy不在列表中。
修改完成后,按Ctrl+O保存内容,再按Ctrl+X退出编辑器。
2. 重启SSH服务让配置生效
执行以下命令重启SSH服务(根据你的Ubuntu版本选一个即可):
# 适用于Ubuntu 16.04及以上的新版本 sudo systemctl restart sshd # 旧版本Ubuntu可以用这个命令 sudo service ssh restart
3. 修复deploy用户家目录的权限
SSH对用户家目录的权限有严格要求,不能给其他用户开放写权限,否则会直接拒绝密码登录请求。执行下面的命令修正权限:
sudo chmod 755 /home/deploy
4. 测试密码登录
回到Mac终端,尝试用密码登录实例:
ssh deploy@<你的AWS实例IP地址>
如果终端还是自动尝试用公钥认证,可以强制指定用密码方式登录:
ssh -o PreferredAuthentications=password deploy@<你的AWS实例IP地址>
这时应该会弹出密码输入提示,输入你之前给deploy设置的密码,就能成功登录了。
重要提醒:修改SSH配置前,一定要保持当前ubuntu用户的登录会话处于打开状态,如果配置出错导致无法连接,你还能通过这个会话修正问题,避免实例失联。
内容的提问来源于stack exchange,提问作者Nikhil Das Nomula
相关产品推荐
相关产品推荐

