SSH管理多密钥

Posted okokabcd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH管理多密钥相关的知识,希望对你有一定的参考价值。

生成密钥对

ssh-keygen -t rsa -b 4096 -C "[email protected]"

# 默认情况下在~/.ssh目录下生成id_rsa和id_rsa.pub两个文件
# id_rsa是密钥,id_rsa.pub是公钥

# 生成a密钥对和b密钥对,-f参数设置密钥文件的文件名
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/a_id_rsa
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/b_id_rsa

连接a机器用密钥a,连接b机器用密钥b

# 在~/.ssh目录下编辑config文件
Host a
    HostName 192.158.5.201
    User root
    Port 1234
    IdentifyFile ~/.ssh/a_id_rsa
Host b
    HostName 192.158.5.202
    User root
    Port 1234
    IdentifyFile ~/.ssh/b_id_rsa
    
# 下面两条命令就可以连上a,b两台机器
ssh a
ssh b

访问github用密钥a,访问gitee用密钥b

# 在~/.ssh/config配置文件中添加如下配置
Host github.com
    IdentifyFile ~/.ssh/a_id_rsa
Host gitee.com
    IdentifyFile ~/.ssh/b_id_rsa

# 验证, 如果失败可用-vT参数查看失败原因
git -T [email protected]
git -T [email protected]

访问多个github账号

  • 设置不同Host对应同一个HostName但密钥不同
  • 取消全局用户名/邮箱设置,为每个仓库独立设置用户名/邮箱
# 在~/.ssh/config配置文件中添加如下配置
Host account1.github.com
    HostName github.com
    IdentifyFile ~/.ssh/a_id_rsa
Host account2.github.com
    HostName github.com
    IdentifyFile ~/.ssh/b_id_rsa

设置邮箱和用户名

# 设置全局的
git config --global user.email "[email protected]"
git config --global user.name "your_name"

# 取消全局的
git config --global --unset user.email
git config --global --unset user.name

# 为每个库设置单独的
git config user.email "[email protected]"
git config user.name "your_name"

scp的简化

# 未配置ssh-config之前
scp -P 1234 [email protected]:/abc/def .

# 配置ssh-config之后
scp a:/abc/def .

ssh-agent

ssh-agent bash命令解释: ssh-agent是专为既令人愉快又安全的处理RSA和DSA密钥而设计的特殊程序,不同于ssh,ssh-agent是个长时间持续运行的守护进程(daemon),设计它的唯一目的就是对解密的专用密钥进行高速缓存。ssh包含的内建支持允许它同ssh-agent通信,允许ssh不必每次新连接时都提示您要密码才能获取解密的专用密钥。对于ssh-agent,您只要使用ssh-add把专用密钥添加到ssh-agent的高速缓存中。这是个一次性过程;用过ssh-add之后,ssh将从ssh-agent获取您的专用密钥,而不会提示要密码短语来烦您了。 如果出现如下提示信息说明没有SSH Key在代理中

参考

以上是关于SSH管理多密钥的主要内容,如果未能解决你的问题,请参考以下文章

Git管理多个SSH密钥,Git多帐号配置

Git配置多ssh密钥

git ssh密钥生成与配置

同一个电脑使用多份密钥文件绑定多个帐号

如何管理 ~/.ssh 目录中的多个 ssh 密钥

ssh key密钥认证实现批量分发管理部署