使用CircleCI进行部署 - SSH登录服务器需要密码,但我已经关联了SSH密钥

4

我正试图通过CircleCI的部署任务SSH进入服务器

ssh -oStrictHostKeyChecking=no $DEV_DROPLET_USER@$DEV_DROPLET_IP

我已经在CircleCI中加载了此服务器上用户的SSH私钥,但每次运行作业时,都会得到以下输出:

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

如何停止提示我输入密码?

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


https://superuser.com/a/1328919/284722 - nbari
2个回答

8
为了进行无密码 ssh 连接,您需要:
  • 将私钥放入连接到服务器的客户端计算机上 $HOME/.ssh/ 目录中的文件中(例如: $HOME/.ssh/MyServer
  • 将公钥复制到服务器上的文件 $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 代理。


这里的客户端是在CircleCI上运行的Docker镜像,那么如何/在哪里存储私钥呢? - Alex 75

1
迟来的回复,但我希望它能帮助未来的某个人。
假设您按照CircleCI文档中这些说明的步骤进行操作,那么在运行add_ssh_keys步骤时,私钥将自动复制到由CircleCI使用的机器上。
确保您要SSH登录的服务器上生成了公钥(在~/.ssh/id_rsa.pub或类似位置),并将其复制到同一服务器上的~/.ssh/authorized_hosts文件中。这是至关重要的步骤,它允许拥有私钥(CircleCI)的任何人被允许进入服务器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接