ssh端口22:连接被拒绝

时间:2017-08-01 12:27:02

标签: amazon-web-services amazon-ec2 ssh login

我最近接手了一个用于网站的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页面底部的链接)。

我不知道如何在无法登录服务器实例的情况下进行更新。似乎唯一的办法就是制作一台新服务器,复制文件,然后重新配置所有内容......

2 个答案:

答案 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:

  
      
  1. 停止实例。
  2.   
  3. 转到行动 - >实例设置 - >查看/更改用户数据,并粘贴以下内容:
  4.   
#cloud-config 
cloud_final_modules:
  - [cc_package_update_upgrade_install, always]
package_upgrade: true
  
      
  1. 启动实例。
  2.   
  3. 等待10分钟并停止实例。 5 [可选]步骤2中的用户数据脚本在每次引导时强制对实例进行yum升级。   如果您不想这样做,请从步骤2中删除用户数据。
  4.   
  5. 启动您的实例。
  6.         

    要验证此更新,您应该能够登录(确认   修复),然后运行" 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!