ssh 密钥 ssh-agent bash 和 ssh-add

man*_*tty 33 linux ssh

我是 ssh 密钥的新手。谁能解释一下ssh-agent bashssh-add是如何工作的?

将来我需要了解它的内部结构。

use*_*686 49

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

启动ssh-agent的常用方法有:

  • eval `ssh-agent`– 这会在后台运行代理,并为当前shell 实例设置适当的环境变量。

    ssh-agent,在不带参数的情况下启动时,会输出由您的 shell 解释的命令。)

  • exec ssh-agent bash– 启动一个bashshell实例,替换当前的。

    (使用一个或多个参数,ssh-agent不输出任何内容,而是启动指定的命令:在本例中为bashshell,但从技术上讲,它可以是任何内容。)

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

但是,这只会启动一个空代理。要使其真正有用,您需要使用ssh-add,它会解锁您的密钥(通常是~/.ssh/id_*)并将它们加载到代理中,使sshsftp连接可以访问它们。

  • 有没有办法在多个 bash 会话中启动 ssh-agent 一次? (5认同)

小智 10

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

编辑您的~/.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
}
Run Code Online (Sandbox Code Playgroud)

检查你的钥匙 ssh-add -l

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

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