AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1186058
Accepted
Liso
Liso
Asked: 2019-11-04 22:29:51 +0800 CST2019-11-04 22:29:51 +0800 CST 2019-11-04 22:29:51 +0800 CST

如何一劳永逸地输入 ssh 密码密钥

  • 772

我已经为 ssh 设置了一个无密码设置,它使用公钥身份验证来连接所需的远程服务器,一切都运行良好。

我正在使用密码来解锁私钥,使用这个解决方案- 问题是每次我启动我的系统时都会询问密码。

我发现这很麻烦,我只想一劳永逸地输入它,所以下次我启动会话时,我不必再次输入它,是否有类似缓存密钥之类的东西可以保存我的密码并且可以跨越会话(也可以在重新启动后幸存)?

是否有可能在保持我的 ssh 密码完整的同时实现所有这些?

encryption ssh password passphrase
  • 3 3 个回答
  • 14864 Views

3 个回答

  • Voted
  1. John J.
    2019-11-11T20:33:23+08:002019-11-11T20:33:23+08:00

    你想用keychain.

    该keychain程序管理密钥缓存程序的一个实例ssh-agent。启动时ssh-agent,会创建两个环境变量以进行评估。通常,当 shell 在ssh-agent已启动的地方关闭时,这些环境变量会丢失。该keychain程序跨登录跟踪这些变量,并在~\.keychain目录中提供 shell 脚本。

    有几种运行方式keychain,一种是从命令行手动运行。每次启动 shell 时,使用:

    eval `keychain --eval`
    

    这将查找ssh-agent它是否正在运行,如果没有,则启动它。无论哪种方式,使用 eval onkeychain将设置必要的环境变量,您可以使用以下方法添加密钥:

    ssh-add <private-keyfile>
    

    如果private-keyfile有密码,则在执行过程中会提示您输入该密码ssh-add,但只要ssh-agent正在运行,这将是您最后一次需要输入私钥密码。

    因为 evalkeychain设置了SSH_AUTH_SOCK环境变量,所以任何运行都ssh将使用ssh-agent来完成身份验证。

    另一个建议是将keychain执行添加到您的.bashrc文件中,正如StackExchange answer中所建议的那样。

    要终止keychain只需输入命令:

    keychain --stop mine
    

    或者,如果要关闭 的所有实例ssh-agent,请输入命令:

    keychain --stop all
    

    请注意,使用诸如ssh-agent通过将那些经过身份验证的密钥存储在内存中来破坏密码私钥文件的安全性等服务。这是不安全的,尤其是内存侧信道攻击。如果您对密钥安全性不感兴趣,更简单的解决方案是按照@vidarlo 的建议删除私钥上的密码。

    • 18
  2. Best Answer
    vidarlo
    2019-11-04T22:46:52+08:002019-11-04T22:46:52+08:00

    运行ssh-keygen -p。这将允许您删除密钥上设置的密码。如果未设置密码,则以明文形式存储,无需解锁即可使用:

    $ ssh-keygen -p 
    Enter file in which the key is (/home/user/.ssh/id_rsa): 
    Enter old passphrase: 
    Key has comment ''
    Enter new passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved with the new passphrase.
    

    只需在提示输入密码时按 Enter 即可设置无密码。之后,您可以自由使用您的密钥。

    • 8
  3. xrplorer
    2019-11-12T19:14:05+08:002019-11-12T19:14:05+08:00

    简单的答案是否定的
    。如果它在重新启动后持续存在,那么它就违背了目的(即保护)。
    但是,您可以跨登录会话甚至跨多个终端维持它。

    • 如果您想跨登录会话维持但可以在每个终端输入一次密码,然后添加eval $(ssh-add)到.bash_profile

    • 如果您想在每次系统重新启动时执行一次,安装钥匙串,更改您的~/.ssh/config文件以将钥匙添加到钥匙串(AddKeysToAgent yes)并执行上述步骤。

    • 6

相关问题

  • 使用加密的主目录重新安装 Ubuntu?

  • 用户如何避免在启动时输入密码?[关闭]

  • 如何从双启动计算机访问加密的主文件夹?

  • 安装时,我可以选择加密我的主文件夹——这是做什么的?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve