首页 > 解决方案 > 使用 CircleCI 部署 - SSH 到服务器需要密码,但我关联了 SSH 密钥

问题描述

我正在尝试通过 SSH 连接到服务器,作为 CircleCI 中部署工作的一部分

ssh -oStrictHostKeyChecking=no $DEV_DROPLET_USER@$DEV_DROPLET_IP

我将此服务器上用户的 SSH 私钥加载到 CircleCI 中,但每次运行作业时,我都会得到此输出

Warning: Permanently added '$host' (ECDSA) to the list of known hosts. <$user>@<$host>'s password:

如何阻止它提示我输入密码?

我已将此用户的 SSH 密钥添加到服务器上的 SSH 代理(这些说明)

标签: sshdevopsssh-keys

解决方案


对于无密码 ssh 连接,您必须:

  • 将私有 ssh 密钥放入$HOME/.ssh/连接到服务器的客户端计算机上的目录中的文件中(例如$HOME/.ssh/MyServer:)
  • 将公共 ssh 密钥复制到$HOME/.ssh/authorized_keys服务器上的文件中
  • $HOME/.ssh/known_hosts对客户端计算机上的文件具有写入权限

sshd 服务通常已经配置为接受基于密钥的身份验证。

从客户端计算机,您现在可以进行无密码连接ssh -i $HOME/.ssh/MyServer $DEV_DROPLET_USER@$DEV_DROPLET_IP

当然,在客户端计算机上,您的 $DEV_DROPLET_USER 必须具有访问 ssh 相关文件的适当权限。

您无需在客户端或服务器上对 ssh 代理执行任何操作。


推荐阅读