ssh如何管理多个私钥进行多端免密登录

日常使用 ssh 进行免密登录的时候,经常会遇到这样的问题。比如 ~/.ssh/ 目录下已经存在一个 id_rsa 私钥在进行其他业务的免密登录,现在如果需要再配一个 github 的免密登录,怎么办呢?私钥的名字又要固定为 id_rsa,总不可能在两个私钥间来回改名字吧

使用配置文件进行多个私钥的管理

我们可以在 ~/.ssh 目录下创建一个 config 文件,文件内容大致如下

Host github.com
IdentityFile ~/.ssh/id_rsa.github
User lionsu

每一项的作用留到后面再讲,先把 ssh 的密钥配完

使用命令 ssh-keygen 生成密钥对
//指定生成密钥的文件名 免得覆盖现有的 id_rsa 文件
//这条命令也可以用于 Windows
$ssh-keygen -t rsa -f ~/.ssh/id_rsa.github

执行完毕会在 ~/.ssh/ 目录下生成 id_rsa.github 和 id_rsa.github.pub 两个文件,id_rsa.github 是私钥,需要放在本地,id_rsa.github.pub 是公钥,需要配置到 github 的用户设置页面上

打开github配置页面

登录github之后,访问 https://github.com/settings/keys 进入设置页,SSH and GPG keys这一栏是配置公钥的地方

github配置公钥.png

Title 先写一个方便记忆标识的名字(比如homePC)
然后用文本编辑器(记事本就可以)打开 id_rsa.github.pub,把内容全部复制到 key 这一栏,一定要带上文本开头的 ssh-rsa, 否则 github 页面会提示公钥不合法,最后面的用户名可以带上也可以去掉

回到开头的config文件
Host github.com
IdentityFile ~/.ssh/id_rsa.github
User lionsu
  • Host 是需要免密登录的域名,如果是服务器的话,便是ip地址(这一点没有测试过),不过这里因为是github网站,所以这里Host一定要填 github.com,个人猜测应该是跟 .git/config 这个配置文件里面的git url相关
  • IdentityFile 本地私钥的路径,一定要准确
  • User 如果有多个 github 帐户需要免密登录,则用这一项进行标识(不一定要跟github站点上的用户名一致,有关联性方便标识就行)
如果这时git push推送还是弹出密码框,就找到 github 项目目录下的 .git/config 文件,打开看一看 remote url 是不是 https 协议,如果是,改成 ssh 协议就好(github项目https地址和ssh地址是放在一起的)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容