我想运行 ssh-agent(具有最大生命周期选项),但不在启动时添加任何密钥,而是按需添加它们。
就像我第一次登录某个服务器时,它应该要求输入密码,下次(除非我等了一个多小时)它应该连接干净:
ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...
ssh server2
server2> # no passphrase this time
# wait for lifetime
ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
Run Code Online (Sandbox Code Playgroud)
我不想手动记住每次运行“ssh-add”。(例如,只为 ssh 输入密码和“哦,它没有记住,需要重新输入”)。
如果用户提供了密码,如何配置 ssh 以自动将密钥添加到 ssh-agent?
小智 83
ssh 支持在首次使用时向代理添加密钥(自 7.2 版起)。您可以通过将以下内容放入来启用该功能~/.ssh/config:
AddKeysToAgent yes
Run Code Online (Sandbox Code Playgroud)
这在使用衍生工具(例如 git)时也有效。
从7.2 变更日志:
- ssh(1):? 添加一个 AddKeysToAgent 客户端选项,可以设置为“yes”、“no”、“ask”或“confirm”,默认为“no”。启用后,如果 ssh-agent 正在运行,则在身份验证期间使用的私钥将添加到 ssh-agent(如果设置为“confirm”,则启用确认)。
Jes*_*hia 18
你可以作弊并alias ssh='ssh-add -l || ssh-add && ssh'在你的.bashrc/上放一些类似的东西.profile。第一次运行ssh-add -l,它可以返回 0(代理上有密钥)、1(没有密钥)或 2(没有代理运行);如果返回 0,ssh将运行;如果 1,ssh-add将运行然后ssh;如果为 2,ssh-add将失败并且ssh不会运行。如果您想在没有代理运行的情况下运行&&,;请将替换为ssh。
在 ssh 支持 auto-call-ssh-add 之前,我.bashrc根据 Kovensky 提议在我的 中添加了这个:
ssh-add -l >/dev/null || alias ssh='ssh-add -l >/dev/null || ssh-add && unalias ssh; ssh'
Run Code Online (Sandbox Code Playgroud)
只有在没有添加身份时才会创建别名,并且别名一旦运行就会自行销毁。
这样,在添加身份后使用常规 ssh 命令。
| 归档时间: |
|
| 查看次数: |
40209 次 |
| 最近记录: |