ssh-add和ssh-agent

Posted snuglove

tags:

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

注: 因为在ssh-agent异常关闭或者新开窗口是会导致ssh-add找不到私钥,导致添加的私钥无效,所以下面使用keychain管理

ssh-add 参数

-l

查看代理中的私钥

-L

查看代理中私钥对应的公钥

-D

移除所有代理中的私钥

-x

锁定ssh代理  需要指定密码

-X

解锁ssh代理

 

ssh-agent是代理,帮我们管理私钥,当创建的私钥与默认不一样的时候,通过ssh-agent管理

启动

ssh-agent $SHELL        #创建一个子bash,ssh-agent运行在子bash中,子bash退出,代理关闭
eval `ssh-agent`        #单独启动了一个 ssh-agent程序,关闭使用 ssh-agent -k

关闭

ssh-agent -k

 

当创建的私钥不是默认名称时,ssh无法直接登陆,ssh默认使用默认私钥

 

[root@2-128 .ssh]# ll /root/.ssh/
total 12
-rw------- 1 root test1 1679 Nov 18 20:31 id_rsatest
-rw-r--r-- 1 root test1  392 Nov 18 20:31 id_rsatest.pub

[root@2-128 .ssh]# ssh-copy-id -i /root/.ssh/id_rsatest.pub -p1210  root@106.13.61.137

#当ssh登录时还是需要密码
[root@2-128 .ssh]# ssh -p1210 root@106.13.61.137
root@106.13.61.137‘s password: 

[root@2-128 .ssh]#  

#还需要指定私钥

[root@2-128 .ssh]# ssh -p1210 -i /root/.ssh/id_rsatest root@106.13.61.137
[root@bdserver ~]# 

使用ssh-add将私钥添加到代理程序中,再次直接登录就ok了

[root@2-128 .ssh]# eval `ssh-agent`
Agent pid 26764
 
[root@2-128 .ssh]# ssh-add /root/.ssh/id_rsatest
Identity added: /root/.ssh/id_rsatest (/root/.ssh/id_rsatest)
[root@2-128 .ssh]# 
[root@2-128 .ssh]# ssh -p1210  root@106.13.61.137
[root@bdserver ~]# logout
Connection to 106.13.61.137 closed.

5. keychain 管理ssh-agent

1.安装

 

cd /root && git clone https://github.com/funtoo/keychain.git
cd /root/keychain && make && mv keychain /usr/bin/ && source /etc/profile

2.keychain的一些参数

keychain -k mine

只停止 keychain 启动的代理程序

keychain /root/.ssh/id_rsa

添加私钥到代理

keychain --clear

清理所有秘钥

keychain --clear /root/.ssh/id_rsa

清理 id_rsa 这个私钥

3.配置环境变量使代理永久生效

将下面这句,配置到环境变量,我使用的是zsh

vim /root/.zshrc 配合到末尾即可

eval `keychain --eval --agents ssh id_rsa_mayun`
eval `keychain --eval --agents ssh id_rsa`

这里的意思是将id_rsa_mayun 和is_rsa 私钥 添加到ssh-agent中管理

 

注:

    1. 只要环境变量有效,ssh代理和添加的私钥就不会失效
    2. 使用这种方法,清理,添加秘钥均需要在环境变量中操作.好处是保证了代理的长期有效

以上是关于ssh-add和ssh-agent的主要内容,如果未能解决你的问题,请参考以下文章

我需要在每次启动时重新运行 eval(ssh-agent) 和 ssh-add

ssh-agent && 及 ssh-add介绍

ssh-add ssh-agent使用

如何仅获取远程 git 操作来触发 ssh-agent 的 ssh-add 事件?

“无法打开与您的身份验证代理的连接”,即使在 ssh-agent 启动后,ssh-add 也会出错

获取Visual Studio 2017以使用git的ssh-agent / ssh-add