【问题标题】:How to connect to AWS EC2 via SSH如何通过 SSH 连接到 AWS EC2
【发布时间】:2019-08-06 15:35:07
【问题描述】:

我想通过 gitlab-ci 在 AWS EC2 上部署我的后端,但是 ssh 不起作用。如何连接到我的 EC2 实例?

image: docker:latest
...
deploy:
  stage: deploy
  script:
    - echo "$EC2_SSH_KEY" > "key.pem"
    - chmod 777 key.pem
    - apk update && apk add openssh
    - ssh -tt -i "key.pem" ec2-user@....compute.amazonaws.com

错误

$ ssh -tt -i "key.pem" ec2-user@....compute.amazonaws.com
Host key verification failed.

【问题讨论】:

  • 不要将 777 用于 ssh 密钥,尝试将它们设置为 644 或更好的 600
  • 专门将它们设置为 600。它们必须只有所有者才能访问。
  • 我建议你也告诉你尝试过什么没用。您可以通过搜索您的错误消息找到以前的类似问题,然后编辑您的问题,详细说明您做了什么但没有奏效。
  • “主机密钥验证失败”是明确的,您需要在连接选项中接受主机密钥或禁用主机密钥检查(即:-o StrictHostKeyChecking=no)。参考。即:askubuntu.com/questions/87449/…
  • @laprof ssh 抱怨文件权限不正确表明服务器上启用了 StrictModes - 禁用 StrictModes 或设置密钥的正确权限。快乐 ssh'ing。

标签: amazon-web-services docker amazon-ec2 gitlab-ci


【解决方案1】:

错误“主机密钥验证失败”是明确的 - 您需要在建立连接之前接受服务器的主机密钥,或者您需要禁用主机密钥检查(即ssh -o StrictHostKeyChecking=no user@host)。

如果ssh服务器配置了StrictModes,那么sshd会报错,如果文件的所有权/权限不正确,你可以设置正确的权限,即:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

有关StrictHostKeyCheckingStrictModes 选项的更多信息,请参阅。 https://www.freebsd.org/cgi/man.cgi?sshd_config(5)

【讨论】: