使用带有--noask选项的钥匙串保存SSH密钥密码


10

我想使用钥匙串来管理SSH密钥的密码提示,但是它应该1)仅在我实际使用密钥时才询问它,以及2)之后将其保存一段时间。目前,我有2个选项:

  1. $ eval `keychain --eval --agents ssh id_rsa` -在启动时总是会要求输入密码,但是它将保存。
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` -在启动时不会要求任何内容,但是每次我使用该密钥时都会不断要求输入密码。

有什么方法可以结合这些方法的优点?

Answers:


9

ssh-agentOpenSSH的和最新版本使简单:

  1. ssh-agent添加的键的默认超时开始正常(例如60分钟):

    eval `ssh-agent -t 60m`
    
  2. 配置您ssh将实际使用的密钥添加到代理。在〜/ .ssh / config`中添加新行:

    AddKeysToAgent yes
    

    最新的OpenSSH 7.2中具有此功能。在以前的版本中,如果超过了超时时间,则需要将密钥手动添加到代理中,但是可以使用bash函数将其自动化,就像这样:

    ssh() {
      /bin/ssh -o BatchMode=yes $* || \
        ssh-add path/to/the-key && /bin/ssh $*
    }
    

    想法:尝试以批处理方式使用密钥进行连接(如果密钥不存在,则不会提示输入密码并失败),一旦失败,将密钥添加到代理中并重新运行ssh命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.