ssh 密钥 ssh-agent bash 和 ssh-add

ssh 密钥 ssh-agent bash 和 ssh-add

我对 ssh 密钥还不熟悉。有人能解释一下ssh-agent bash和的ssh-add工作原理吗?

我以后需要了解它的内部结构。

答案1

一个代理人是一个将你的钥匙保存在内存中的程序,这样你只需要解锁它们一次,而不是每次。ssh 代理对 SSH 密钥执行此操作。

通常的方法开始ssh 代理是:

  • eval `ssh-agent`– 这将在后台运行代理,并为当前的shell 实例。

    ssh 代理,当不带参数启动时,输出要由 shell 解释的命令。)

  • exec ssh-agent bash– 开始新的shell的实例bash,替换当前的实例。

    (有一个或多个参数,ssh 代理不输出任何内容,但启动指定的命令:在本例中是 shell bash,但从技术上讲它可以是任何东西。)

    有时第二种方法是首选,因为当您关闭终端窗口时它会自动终止 ssh-agent。(使用 启动它时eval,代理仍会保持运行,但无法访问。)

但是,这只会启动一个空代理。要真正让它有用,你需要使用ssh 添加,它将解锁你的密钥(通常是~/.ssh/id_*),并将其加载到代理中,使它们可供远程控制或者安全FTP连 接。

答案2

此外,您可能希望在会话开始时添加一些密钥。

编辑您的~/.bashrc文件,并添加:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

使用以下方式检查您的密钥ssh-add -l

您可以使用以下命令停止当前 ssh-agent 会话ssh-agent -k

关于 ssh-agent 和 .bashrc 需要注意的是不要加载太多密钥。ssh 守护进程的默认尝试次数限制为 6 次。可以使用/etc/ssh/sshd_config值进行修改MaxAuthTries

相关内容