如何按需运行 ssh-add?可以充当SSH_ASKPASS吗?

如何按需运行 ssh-add?可以充当SSH_ASKPASS吗?

我想每天使用加密的 SSH 密钥进行 ssh 多次,这种情况user@local可以在安全性和可用性之间进行良好的权衡。user@remotessh-agent

我还希望不必记住在运行ssh-add之前运行ssh- 我宁愿在第一次需要密码时被要求输入密码,然后自动记住它,例如八个小时。

所以:据我所知,我想我想大致使用我认为使用的ssh-add地方,除了不提供它想要的密码。我的理解正确吗?如果是这样,显而易见的解决方案似乎是编写一个脚本,要求输入密码,运行然后将密码回显回.这听起来是正确的方法吗?有没有更好的办法?如果没有,您是否有一个或两个指示可以开始使用此脚本?$SSH_ASKPASSssh-addsshssh-addssh

(我从 Linux 控制台、xterm 和 emacs*shell*缓冲区使用 ssh;从 X 角度来看,该解决方案不需要做任何花哨的事情。)

答案1

我只是在寻找本质上相同的解决方案,并发现两个在两种不同的假设下看起来有用的解决方案:

  • Michael J. Schultz 通过写一个解决了他的问题ssh 的 shell 别名。它用

    ssh-add -l > /dev/null || ssh-add
    

    检查 ssh-agent 是否有任何已加载的密钥,如果没有,请运行 ssh-add。他指出,他编写解决方案的方式适合他的用例,但并不适合所有人。

  • Raúl Benencia 编写了一个名为odsa自动找出给定主机需要哪些密钥并将它们加载到 ssh-agent 中。

答案2

我处理相同要求的方式与迈克写的关于迈克尔的方式类似:

~/bin/sshmyvps

#!/bin/bash
if ! ssh-add -l|grep -q vpsaccess
then
    ssh-add -t 2h ~/ssh-keys/vpsaccess.key
fi
ssh  [email protected]

主要的区别是我不只是寻找任何加载的密钥,但仅适用于特定的密钥,然后使其仅在有限的时间内有效。

答案3

自从OpenSSH 7.2有客户端配置选项AddKeysToAgent

将其添加到您的~/.ssh/config文件中:

AddKeysToAgent yes

从发行说明来看:

  • ssh(1):添加 AddKeysToAgent 客户端选项,可设置为“yes”、“no”、“ask”或“confirm”,默认为“no”。启用后,身份验证期间使用的私钥将被添加到 ssh-agent(如果正在运行)(如果设置为“确认”,则启用确认)。

相关内容