menu E4b9a6's blog
rss_feed
E4b9a6's blog
有善始者实繁,能克终者盖寡。

自动管理ssh密钥之ssh-agent

作者:E4b9a6, 创建:2023-10-08, 字数:1052, 已阅:558, 最后更新:2023-10-08

这篇文章更新于 422 天前,文中部分信息可能失效,请自行甄别无效内容。

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

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

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

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

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

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

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

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

Bash
ssh-add /path/to/id_rsa

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

Bash
ssh chancel@1.1.1.1 -p 22

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

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

PowerShell
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服务后会重新读取密钥文件,所以不可以添加后删除密钥文件,否则添加将会失效

参考文档


[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
gravatar
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]