使用config文件来维护SSH密钥

记录一次如何管理多个 SSH 密钥, GitHub 多个账号多个密钥如何区分管理问题。

为什么需要

经常需要通过 SSH 连接到多个远程系统,需要记住所有远程 IP 地址、不同的用户名、非标准端口…

  • 公司需要用到 GitHub 进行开发。并且使用公司邮箱和账号。
  • 另外自己也有一个个人的 GitHub 账号。
  • 自己的 NAS 服务器也需要使用 SSH 密钥的方式登录。

创建 SSH 密钥

进入目录 cd ~/.ssh

ssh-keygen

接下来会提示你输入一个文件名来保存你的SSH key, 如果不输入直接回车, 则会保存在默认的文件里 id_rsa.pub
然后会提示你输入 passphrases 连续输入两次,这里我默认选择空。(直接两个回车就好了)

添加 config 文件

Host nas
  HostName 192.168.31.10  # 这里输入 SSH 地址
  Port 1234               # 输入自定义端口号
  User root               # 用户名
  IdentityFile ~/.ssh/nas # 密钥 (*.pub 文件是公钥)

# 公司账号
Host company
    HostName github.com
    User conpany-account
    IdentityFile ~/.ssh/company

# 个人账号
Host myself
    HostName github.com
    User myself-account
    IdentityFile ~/.ssh/myself

注意一定要设置 config 文件的权限, 否则使用 SSH 时会提示安全错误。

sudo chmod 700 config

可以通过下面命令进行测试, 观察日志中是否出现 You’ve successfully authenticated, 字段。

ssh -T git@company # 测试公司账号
ssh -T git@myself # 测试公司账号

使如何用

使用 SSH 克隆 github 项目 git@github.com:Wxh16144/img.git, 需要修改 git@githubgit@myself;

git clone git@github.com:Wxh16144/img.git # github 复制过来的命令

# 修改为个人项目地址
git clone git@myself:Wxh16144/img.git
ssh nas # 连接 NAS 终端

参考文档

CC BY-NC-SA 4.0 2018–PRESENT © Wuxh

cd .. md