管道损坏后无法使用 ssh 连接到实例

Cannot connect to an Instance using ssh after Broken pipe

我是 SaltStack 和 AWS 的新手,这可能是个愚蠢的问题,我创建了一个 AMI(使用打包程序),使用 SaltStack(无主)作为供应商...我能够通过 ssh 连接并制作minion 的配置。我能够 运行 salt-call state.highstate 成功。 后来,我失去了与我的实例的连接, ([root@<ip> ec2-user]# Write failed: Broken pipe) 之后,我无法再次连接。

已尝试:

  1. 重启实例但没有成功
  2. 我检查了 .ssh 文件的权限,它们似乎没问题
  3. 创建一个新实例并使用相同的 key.pem 我能够连接到这个新实例。

我不确定我是否缺少 SaltStack 中的配置。 运行ning salt-call state.highstate 之后我的实例上的密钥是否有可能发生变化??

我做错了什么?

运行ning highstate 中没有任何固有的东西会终止 SSH 连接并阻止您重新连接。我怀疑是你的 SLS 文件中的某些东西破坏了 SSH - 当你 运行 highstate.

您的 Salt 状态可能已经完成的事情:

  • 您的 SSH 密钥是 removed/mangled
  • opensshd 配置已更改
  • openssh-server 已卸载

编辑:看到评论中链接的 pastebin 中 Salt 的输出后,可能是 AuthorizedKeysFile 选项被注释掉了:

-AuthorizedKeysFile .ssh/authorized_keys
+#AuthorizedKeysFile    .ssh/authorized_keys

我建议使用 file.replace 来修补您需要的特定更改,而不是用新版本替换整个 /etc/ssh/sshd_config