自动使用 ssh-add

自动使用 ssh-add

因此在 Ubuntu 上,每当我通过 SSH 连接到一台机器时,我都会收到解锁私钥的提示,直到我退出操作系统会话,我都可以使用密钥身份验证通过 SSH 连接到任意数量的机器,而无需输入任何内容。在 Debian 上,每次我执行任何操作时都会收到输入密码的提示。如果我运行“ssh-add”,那么当我继续使用同一个终端窗口时,我就不必再次输入密码。如果我打开一个新终端,我将需要再次运行 ssh-add。有人有什么关于如何让 Debian 7.1 复制 Ubuntu 在此处提供的功能的提示吗?

答案1

秘密在于后台有 ssh-agent 在运行,Ubuntu 会将此进程的设置保存在某处。因此,为了实现这一点,您需要 a) 在后台启动 ssh-agent 和 b) 将该进程的 PID 保存在某处,以便您随后可以为所有后续 shell 获取 PId 的值。

当 ssh-agent 启动时,它将输出其 PID 以及您稍后在生成新 shell 时想要获取的一些其他信息。您~/.bashrc可能希望使用类似下面的方法:

setf="$HOME/.ssh_agent_settings"          # filename for storing PID etc.
[ -r $setf ] && . $setf > /dev/null 2>1   # source PID etc. if file exists
kill -0 $SSH_AGENT_PID > /dev/null 2>&1   # kill -0 will fail if process doesn't exist
[ "$?" -eq 0 ] && exit                    # kill returns 0 on success
ssh-agent > $setf                         # process doesn't exist, so we create one
. $setf > /dev/null 2>&1                  # source PID of the newly created process

这将在 shell 初始化时启动 ssh-agent(如果它尚未运行),或者仅从中获取 ssh-agent PID 和 AUTH_SOCK 变量~/.ssh_agent_settings

相关内容