无法从另一台EC2实例登录,需配置SSH密码验证方式
解决EC2 Ubuntu实例间SSH密码登录问题
问题原因
Ubuntu EC2实例默认配置下:
- SSH服务禁用了密码验证(
PasswordAuthentication设为no) - 默认用户(如
ubuntu)未设置密码
所以跨实例SSH时,系统优先尝试公钥验证,失败后直接返回Permission denied (publickey),不会触发密码验证流程。
配置步骤
1. 为目标实例的登录用户设置密码
先通过本地SSH连接到目标EC2实例,执行以下命令设置ubuntu用户的密码:
sudo passwd ubuntu
按照提示输入并确认密码(输入时终端不会显示字符,正常输入即可)。
2. 修改SSH配置启用密码验证
编辑SSH服务配置文件:
sudo nano /etc/ssh/sshd_config
找到以下配置项,修改为对应值:
- 将
PasswordAuthentication no改为PasswordAuthentication yes - 若存在
ChallengeResponseAuthentication,改为ChallengeResponseAuthentication yes
修改完成后,按Ctrl+O保存,回车确认文件名,再按Ctrl+X退出编辑器。
重启SSH服务使配置生效:
sudo systemctl restart sshd
3. 检查目标实例安全组配置
确保目标EC2实例的安全组允许源EC2实例的私IP/安全组访问22端口:
- 进入AWS控制台的EC2安全组页面
- 找到目标实例的安全组,添加入站规则:
- 类型:SSH(22)
- 源:选择源EC2实例的安全组ID,或直接填写源实例的私IP地址
4. 测试跨实例密码登录
在源EC2实例的终端执行:
ssh ubuntu@<目标实例私IP>
此时终端会提示输入密码,输入之前设置的ubuntu用户密码即可完成登录。
注意事项
- 建议保留
PubkeyAuthentication yes配置,同时支持公钥和密码两种登录方式,兼顾安全与便捷 - 若使用自定义用户登录,需为该用户执行
passwd <用户名>设置密码 - 避免将SSH端口的源设置为
0.0.0.0/0,防止未授权访问
内容的提问来源于stack exchange,提问作者Elvis
相关产品推荐
相关产品推荐

