ssh agent

ssh agent是一个密钥管理器,用来管理一个或多个密钥,为SSH客户端使用SSH key连接服务器提供代理

ssh agent的作用

当我们使用默认的公钥和私钥(id_rsa和id_rsa_pub),不需要启动 ssh-agent

1、如果客户端生成了多对密钥,那么就需要手动指定服务器对应的密钥,把私钥添加到ssh agent,ssh agent可以代理整个认证过程,不需要在config文件手动指定对应的密钥

2、当你为你的私钥设置了密码,只需要把私钥添加到ssh agent,避免密码重复输入

使用ssh agent

运行 ssh agent有两种方法,手动运行和自动启动,先看手动运行,如果报下面错误说明ssh agent没有打开

Could not open a connection to your authentication agent

手动运行ssh agent有两种方法:

  • ssh-agent $shell也可以指定shell,如ssh-agent bash
  • Windows中eval $(ssh-agent)

ssh agent的一些常用命令:

# 手动添加私钥
ssh-add ~/.ssh/id_rsa_2
# 查看加载的密钥
ssh-add -l
# 关闭ssh agent
ssh-agent -k

ssh agent的自动启动

Linux:ssh agent 一般会自动开启

Windows:

  • 服务中把OpenSSH Authentication Agent设置为自动
  • 也可为git bash添加配置文件.bashrc
env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi


unset env
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容