大部分公司都是采用SSH密钥进行服务器身份验证,这是相对安全的做法

但是经常使用SSH密钥连接到多个远程服务器上,区分清楚服务器对应的密钥的工作相对就麻烦许多了

ssh-agent是用于管理SSH密钥的守护进程,它将在使用SSH连接到远程服务器上时自动匹配密钥,而无需每次都指定服务器密钥

ssh-agent默认已经在Linux后台运行(Windows需要手动启动服务),并为SSH密钥提供代理服务

它会将解锁的密钥保存在内存中,并在需要时自动提供给 SSH 客户端进行身份验证,所以安全方面无需担心

实践一下,假设我们连接服务器方法如下

ssh chancel@1.1.1.1 -p 22 -i /path/to/id_rsa

每次都需要使用-i来指定证书很麻烦,使用ssh-add将密钥添加到ssh-agent

ssh-add /path/to/id_rsa

在添加成功后,仅需要使用如下连接方法

ssh chancel@1.1.1.1 -p 22 

不仅仅是原生的ssh连接可用,大部分ssh客户端都支持ssh-agent

Windows也支持ssh-agent服务,但需要手动开启,如下

PS C:\windows\system32> Set-Service -StartupType Automatic ssh-agent
PS C:\windows\system32> Start-Service ssh-agent
PS C:\windows\system32> Get-Service ssh-agent

Status   Name               DisplayName
------   ----               -----------
Running  ssh-agent          OpenSSH Authentication Agent


PS C:\windows\system32> (Get-Service ssh-agent).startType
Automatic

请注意,在重启ssh-agent服务后会重新读取密钥文件,所以不可以添加后删除密钥文件,否则添加将会失效

参考文档