更换DigitalOcean SSH无密码私钥,解决GitHub拉取需密码的自动化障碍
解决SSH私钥密码短语重复输入问题
本地登录DigitalOcean服务器免密
用ssh-agent缓存私钥的密码短语,避免每次登录重复输入:
- 启动ssh-agent:
eval "$(ssh-agent -s)" - 将你的私钥添加到agent中(替换成实际私钥文件名,比如
id_rsa):ssh-add ~/.ssh/your_private_key - 验证私钥是否添加成功:
ssh-add -l
如果希望每次打开终端自动加载私钥,把以下内容添加到你的shell配置文件(~/.bashrc或~/.zshrc):
# 自动启动ssh-agent并加载私钥 if [ -z "$SSH_AUTH_SOCK" ]; then eval "$(ssh-agent -s)" ssh-add ~/.ssh/your_private_key fi
首次启动终端时需要输入一次密码短语,后续终端会话内登录服务器无需重复输入。
服务器端拉取GitHub私有仓库免密
方案1:在DigitalOcean服务器上配置ssh-agent
和本地操作一致:
- 登录服务器后启动ssh-agent:
eval "$(ssh-agent -s)" - 添加GitHub私钥到服务器的agent:
ssh-add ~/.ssh/your_github_private_key
同样可以把启动命令加到服务器的shell配置文件,实现持久化加载。
方案2:SSH代理转发(推荐,无需在服务器存私钥)
通过代理转发,让服务器直接使用本地的ssh-agent,不用在服务器上存储GitHub私钥:
- 登录服务器时添加
-A参数开启转发:ssh -A your_username@your_do_server_ip - 或者修改本地
~/.ssh/config文件,配置自动转发:Host do-server HostName your_do_server_ip User your_username ForwardAgent yes
之后登录服务器只需执行ssh do-server,服务器拉取GitHub私有仓库时会直接使用本地已加载的私钥,无需输入密码。
关键权限检查
确保私钥文件权限符合SSH要求,否则ssh-agent会拒绝加载:
- 设置私钥权限为
600:chmod 600 ~/.ssh/your_private_key - 设置公钥权限为
644:chmod 644 ~/.ssh/your_private_key.pub
内容的提问来源于stack exchange,提问作者Bassel Turky
相关产品推荐
相关产品推荐

