我想每天使用加密的 SSH 密钥进行 ssh 多次,这种情况user@local
可以在安全性和可用性之间进行良好的权衡。user@remote
ssh-agent
我还希望不必记住在运行ssh-add
之前运行ssh
- 我宁愿在第一次需要密码时被要求输入密码,然后自动记住它,例如八个小时。
所以:据我所知,我想我想大致使用我认为使用的ssh-add
地方,除了不提供它想要的密码。我的理解正确吗?如果是这样,显而易见的解决方案似乎是编写一个脚本,要求输入密码,运行然后将密码回显回.这听起来是正确的方法吗?有没有更好的办法?如果没有,您是否有一个或两个指示可以开始使用此脚本?$SSH_ASKPASS
ssh-add
ssh
ssh-add
ssh
(我从 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(如果正在运行)(如果设置为“确认”,则启用确认)。