完全避免在 Debian 中输入 ssh id_rsa 密钥的密码

完全避免在 Debian 中输入 ssh id_rsa 密钥的密码

我正在运行带有 Xfce 桌面环境的 Debian,虽然我尝试了许多解决方案,但每次重启时我总是需要输入一次密码。

  • 在 macOS 中,我可以简单地使用ssh-add -l > /dev/null || ssh-add -A,macOS 的默认钥匙串管理器会记住其钥匙串中的密码,从而无需再输入密码,但-A在 Debian 中不起作用。

    我在 中有以下内容.bashrc
    if [ ! -S ~/.ssh/ssh_auth_sock ]; then
      eval `ssh-agent`
      ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
    fi
    export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
    ssh-add -l > /dev/null || ssh-add
    
  • 我也尝试过使用keychain,我认为它与 macOS 的钥匙串相同,但keychian每次重启时也需要密码。

我怎样才能让某些 Debian 密钥管理器安全地记住密码,从而永远避免输入密码?

答案1

几乎所有方法都以某种方式涉及 PAM,因为您的系统登录密码是唯一无需存储在磁盘上即可获得的信息。

最简单的方法是pam_ssh自动启动 ssh-agent 并使用您的系统密码从标准位置和从加载所有密钥~/.ssh/session-keys.d/

在 Debian 上,libpam-ssh 包会自动将模块插入到正确的位置。其他类似方法:

  • pam_gnome_keyring 使用您的登录密码来解锁 GNOME Keyring,它存储了您的 SSH 密钥的密码。
  • pam_ecryptfs 使用您的登录密码来解锁加密的 eCryptFS 文件系统,您可以在其中放置密钥而无需任何密码。
  • pam_gnupg 使用您的登录密码来解锁存储在 gpg-agent 中的密钥(可能是 PGP、SSH 或 S/MIME 密钥)。

如果您不希望启动过程显示任何密码提示……那么,没有安全的方法可以在您的系统上存储密钥。您最多可以使用 TPM 芯片或其他硬件令牌来存储 RSA 密钥,而无需提炼它们——它们将被绑定到它们所在的硬件元素上。

  • 许多新电脑都配有 TPM 模块,或者(对于台式机)配有针头以连接单独购买的模块,或者偶尔配有通过固件模拟的“fTPM”。此类模块可以保存对称和非对称密钥。
  • 有一些 USB“智能卡”令牌提供 PIV 或 OpenPGP 接口,两者都可用于 SSH。对于笔记本电脑,一些 YubiKey 型号几乎适合完全USB 端口内。

相关内容