我最近接手了一个用于网站的Amazon EC2服务器。我们通过SSH使用〜/ .ssh / authorized_keys文件上的公钥登录。我添加了一个新用户,他将对前端和密钥进行更改。他在最后登录之前做了几次尝试。他做了一些改动,在某些时候,我们再也无法登录了,例如:
$ ssh -vvv carlos@onic.com.mx
OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolving "onic.com.mx" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to onic.com.mx [35.167.56.80] port 22.
debug1: connect to address 35.167.56.80 port 22: Connection refused
ssh: connect to host onic.com.mx port 22: Connection refused
尝试使用ec2_user@onic.com.mx上的.pem键或实际上任何现有或不存在的用户时出现同样的错误。
我按照本教程https://aws.amazon.com/articles/5213606968661598分离卷,从新实例连接到它,我尝试修复ssh配置,更新IP(有私有,放公用),/ etc / hostname等,但仍然无法连接。搜索论坛和文档失败。有什么想法或建议吗?
在某些时候,服务器重新启动,当然它更改了IP,域停止工作。我添加了一个弹性IP,更改了域名,并且工作正常,我不知道这是否会导致问题,即在ssh配置文件中的某处我需要将机器的IP更改为新的弹性一个...
根据@ minhhn2910的建议,来自/ var / log / messages:
Jul 16 09:43:18 ip-172-31-41-50 systemd: Starting OpenSSH server daemon...
Jul 16 09:43:18 ip-172-31-41-50 systemd: PID file /var/run/sshd.pid not readable (yet?) afte$
Jul 16 09:44:48 ip-172-31-41-50 systemd: sshd.service start operation timed out. Terminating.
Jul 16 09:44:48 ip-172-31-41-50 systemd: Failed to start OpenSSH server daemon.
Jul 16 09:44:48 ip-172-31-41-50 systemd: Unit sshd.service entered failed state.
Jul 16 09:44:48 ip-172-31-41-50 systemd: sshd.service failed.
Jul 16 09:45:30 ip-172-31-41-50 systemd: sshd.service holdoff time over, scheduling restart.
Jul 16 09:45:30 ip-172-31-41-50 systemd: Cannot add dependency job for unit microcode.servic$
Jul 16 09:45:30 ip-172-31-41-50 systemd: Starting OpenSSH server daemon...
Jul 16 09:45:30 ip-172-31-41-50 systemd: PID file /var/run/sshd.pid not readable (yet?) afte$
Jul 16 09:47:00 ip-172-31-41-50 systemd: sshd.service start operation timed out. Terminating.
Jul 16 09:47:00 ip-172-31-41-50 systemd: Failed to start OpenSSH server daemon.
Jul 16 09:47:00 ip-172-31-41-50 systemd: Unit sshd.service entered failed state.
Jul 16 09:47:00 ip-172-31-41-50 systemd: sshd.service failed.
Jul 16 09:47:42 ip-172-31-41-50 systemd: sshd.service holdoff time over, scheduling restart.
Jul 16 09:47:42 ip-172-31-41-50 systemd: Cannot add dependency job for unit microcode.servic$
Jul 16 09:47:42 ip-172-31-41-50 systemd: Starting OpenSSH server daemon...
更新2017-08-04
似乎这是一个用修补程序修复的错误https://bugzilla.redhat.com/show_bug.cgi?id=1381997(请参阅bugzilla页面底部的链接)。
我不知道如何在无法登录服务器实例的情况下进行更新。似乎唯一的办法就是制作一台新服务器,复制文件,然后重新配置所有内容......
答案 0 :(得分:1)
检查以下事项:
1)首先,确保实例的安全组正在接受来自IP的传入流量。
2)尝试使用标准用户名(ec2-user,而不是ec2_user)ssh到实例中,并使用-i
参数显式引用有效的SSH密钥:ssh -i /path/to/key.pem ec2-user@ip
。
3)如果您在实例中,请检查您尝试使用的其他用户是否拥有其主目录(/home/user
),并且这些目录包含SSH的公共对象您尝试使用的密钥(/home/user/.ssh/authorized_keys
中的
答案 1 :(得分:0)
最后,我们得到了AWS的支持并设法解决了这个问题。
首先,我们更新了Red Hat 7.4:
- 停止实例。
- 转到行动 - >实例设置 - >查看/更改用户数据,并粘贴以下内容:
醇>
#cloud-config
cloud_final_modules:
- [cc_package_update_upgrade_install, always]
package_upgrade: true
- 启动实例。
- 等待10分钟并停止实例。 5 [可选]步骤2中的用户数据脚本在每次引导时强制对实例进行yum升级。 如果您不想这样做,请从步骤2中删除用户数据。
- 启动您的实例。
醇>要验证此更新,您应该能够登录(确认 修复),然后运行" sudo cat / etc / release "这将显示RHEL 7.4 安装。
然后,我们在Rescue实例上运行了以下命令(将/ mnt视为已安装的目录)
$ mv sshd_config sshd_config.old
$ mv sshd_config.rpmnew sshd_config
$ sed 's|SELINUX=enforcing|SELINUX=permissive|g' /etc/selinux/config
$ sudo find / -xdev -exec chmod --reference="{}" "/mnt{}" \;
我们可以再次ssh!