Ubuntu 20.04环境下无法将SSH密钥永久添加至~/.ssh目录的问题咨询
嘿,我来帮你解决这个SSH密钥没法永久添加的问题——Ubuntu 20.04上这个情况我碰到过好几次,咱们一步步来搞定它:
方法1:让ssh-agent自动启动并加载密钥
Ubuntu 20.04默认的ssh-agent管理有时候不会自动持久化,咱们可以手动配置shell的启动脚本,让它每次打开终端都自动处理:
- 打开你的shell配置文件,如果用bash就编辑
~/.bashrc,用zsh的话就编辑~/.zshrc,添加这段代码:
# 自动启动ssh-agent并加载密钥 if ! pgrep -u "$USER" ssh-agent > /dev/null; then ssh-agent > "$HOME/.ssh-agent-info" fi if [[ ! "$SSH_AUTH_SOCK" ]]; then source "$HOME/.ssh-agent-info" > /dev/null fi # 自动加载你的私钥(把下面的id_rsa换成你实际的私钥文件名) ssh-add -l > /dev/null || ssh-add ~/.ssh/id_rsa
这段脚本会先检查ssh-agent是否在运行,没运行就启动并保存它的环境变量;接着加载这些变量确保当前shell能用上agent;最后检查密钥有没有被添加,没加的话自动加载。
- 保存文件后,执行
source ~/.bashrc(对应你的rc文件)让配置立即生效,之后新开终端就不用再手动折腾agent了。
方法2:直接用SSH配置指定密钥(更省心)
如果不想依赖ssh-agent,还可以直接在SSH配置里固定连接Vector时用的密钥,这样连agent都不用管:
- 先创建/编辑
~/.ssh/config文件,记得把权限设为chmod 600 ~/.ssh/config(权限不对会被SSH拒绝),添加以下内容:
Host vector HostName 你的Vector机器人IP地址 User 你的Vector用户名(比如root) IdentityFile ~/.ssh/你的私钥文件名
把上面的占位内容换成你实际的信息,之后你只需要敲ssh vector就能直接连接Vector,完全不用手动处理密钥。
方法3:再确认一遍权限(别忽略!)
你说已经设置了chmod,但还是再检查一遍——权限不对是SSH密钥加载失败的常见原因:
- 私钥文件权限必须是
chmod 600 ~/.ssh/你的私钥 ~/.ssh目录权限必须是chmod 700 ~/.ssh- 公钥文件权限可以设为
chmod 644 ~/.ssh/你的公钥.pub
为啥ssh-add -K没用?
顺便说一句,Ubuntu 20.04里的ssh-add已经移除了-K参数,这个参数是macOS用来把密钥存到系统钥匙串的,Linux系统根本不支持,所以你才会看到那个连接agent的错误。
现在你可以试试上面的方法,新开一个终端直接连接Vector,应该不用再重复启动agent和添加密钥了!
内容的提问来源于stack exchange,提问作者Rob Readling
相关产品推荐
相关产品推荐

