ssh - 使用 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 代理(这些说明)
解决方案
对于无密码 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 代理执行任何操作。
推荐阅读
- c# - How do I run multiple browsers simultaneously in Selenium without using tests? I see some use tests, but that's not what I want
- java - Spring Boot 启动 ApplicationContext 时出错/创建名称为“entityManagerFactory”的 bean 时出错
- python - 遍历嵌套 JSON 的迭代方式?
- plotly - Plotly-将x轴放在前面
- apache-spark - 火花历史服务器在火花提交期间崩溃,并且在历史服务器活动时火花提交被杀死(独立集群)
- javascript - Autofill extension that fills form without form tags
- django - 异常类型:DoesNotExist | 配置文件匹配查询不存在
- javascript - 有没有办法让firebase触发器在更新多个子集合时触发?
- stata - Null hypothesis testing
- jquery - Error Internal Server Error blueimp jquery file upload