如何在不创建新密钥的情况下删除SSH密钥的密码?

btb*_*tes 913 unix passwords ssh openssh passphrase

我在笔记本电脑上创建新的SSH密钥时设置了密码.但是,正如我现在意识到的那样,当您尝试在一小时内通过SSH多次提交(GitSVN)远程位置时,这非常痛苦.

我能想到的一种方法是删除我的SSH密钥并创建新密钥.有没有办法删除密码,同时仍然保持相同的密钥?

Tor*_*rek 1731

简短回答:

$ ssh-keygen -p
Run Code Online (Sandbox Code Playgroud)

然后,这将提示您输入密钥文件位置,旧密码短语和新密码短语(可以留空以使其没有密码短语).

如果你想在没有提示的情况下在一行上完成所有操作:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
Run Code Online (Sandbox Code Playgroud)

重要提示:请注意,在执行命令时,它们通常会~/.bash_history以纯文本形式记录在您的文件(或类似文件)中,包括提供的所有参数(即本例中的密码).因此,除非您有特殊原因,否则建议您使用第一个选项.请注意,您仍然可以使用-f keyfile而无需指定-Pnor -N,并且密钥文件默认为~/.ssh/id_rsa,因此在许多情况下甚至不需要它.

您可能需要考虑使用ssh-agent,它可以缓存密码短语一段时间.最新版本的gpg-agent也支持ssh-agent使用的协议.

  • 要明确:你可以在终端中运行`ssh-keygen -p`.然后它将提示你输入一个密钥文件(默认为我的正确文件,`〜/ .ssh/id_rsa`),旧密码(输入你现在拥有的文件)和新密码(不输入任何内容). (444认同)
  • 防爆.:`ssh-keygen -p -P oldpassphrase -N"" - f~/.ssh/id_rsa` (30认同)
  • -1表示用户在终端输入密码,并通过`〜/ .bash_history``访问.最好键入:``$ cd~/.ssh && ssh-keygen -f id_dsa -p`` (22认同)
  • 你们应该注意,如果你输入命令到 shell 开始了一个(空白)空间,**命令不会被记录**到`~/.bash_hstory`即。使用` ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa` 就可以了(除非你有其他键盘记录器)。你也可以[摆脱历史记录](http://unix.stackexchange.com/questions/49214/how-to-remove-a-single-line-from-history).. (12认同)
  • 可能值得添加一行说明这将覆盖现有文件而不提示新位置. (10认同)
  • @巨大,这并不普遍正确。我并不否认你的系统会这样做。但是,如果确实如此,那是因为特殊的配置。 (2认同)
  • @BrunoBronosky 对,HISTCONTROL 环境变量驱动器,记录什么格式的命令,不记录什么格式。通常它在 .bashrc 中默认设置为 `HISTCONTROL=ignorespace`。 (2认同)
  • @BrunoBronosky 为什么要为此烦恼呢?只需执行 *`history -c`* 即可将其清除。如果您不关心历史记录,您也可以将其符号链接到 *`/dev/null`*。您还可以删除历史文件中的特定条目。您也可以直接编辑该文件。或者也许您指的是那次会议?重读一遍也许你是这个意思? (2认同)

mla*_*bie 37

您可能希望将以下内容添加到.bash_profile(或等效文件)中,该文件在登录时启动ssh-agent.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi
Run Code Online (Sandbox Code Playgroud)

在一些Linux发行版(Ubuntu,Debian)上你可以使用:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host
Run Code Online (Sandbox Code Playgroud)

这会将生成的ID复制到远程计算机并将其添加到远程钥匙串.

你可以在这里这里阅读更多.

  • 现代配送不是开箱即用的ssh-agent吗? (7认同)

小智 35

$ ssh-keygen -p 为我工作

打开git bash.粘贴:$ ssh-keygen -p

按Enter键进入默认位置.

输入旧密码

输入新的密码 - BLANK

确认新的密码 - BLANK

BOOM为git push输入密码的痛苦已经消失.

谢谢!

  • “root 可以在没有密码的情况下使用您的密钥”将其添加到 root 可以执行的所有“安全违规”列表中...如果有人恶意访问 root,您将陷入更深的麻烦。 (14认同)
  • BOOM 你的密钥现在不安全 (6认同)
  • 如果当您按 Enter 键输入 `$ ssh-keygen -p` 并且您的密钥不在默认位置(/Users/yourname/.ssh/id_rsa)时,您可以通过输入 `/Users/yourname/.ssh/ 进行响应出现提示时输入“yourkey” (3认同)

cca*_*ert 15

要更改或删除密码,我经常发现最简单的方法是仅传入 pf标志,然后让系统提示我提供密码:

ssh-keygen -p -f <name-of-private-key>

例如:

ssh-keygen -p -f id_rsa

如果要删除密码短语,请输入空密码。

删除或更改密码的示例运行如下所示:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment 'bcuser@pl1909'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.
Run Code Online (Sandbox Code Playgroud)

将密码短语添加到没有密码短语的密钥时,运行如下所示:

ssh-keygen -p -f id_rsa
Key has comment 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.
Run Code Online (Sandbox Code Playgroud)


bba*_*iee 8

Mac 上,您可以将您的私人 ssh 密钥的密码存储在您的钥匙串中,这使得它的使用变得透明。如果您已登录,则它可用,当您注销时,您的 root 用户将无法使用它。删除密码是一个坏主意,因为任何拥有该文件的人都可以使用它。

ssh-keygen -K
Run Code Online (Sandbox Code Playgroud)

将此添加到 ~/.ssh/config

UseKeychain yes
Run Code Online (Sandbox Code Playgroud)


Aji*_*oel 7

在 Windows 上,您可以使用 PuttyGen 加载私钥文件,删除密码,然后覆盖现有的私钥文件。


小智 7

在我的Windows中,输入上述命令后,它一直显示“id_ed25135:没有这样的文件或目录”。所以我转到该文件夹​​,复制文件夹资源管理器中的路径并在末尾添加“\id_ed25135”。

这就是我最终输入并工作的内容:
ssh-keygen -p -f C:\Users\john\.ssh\id_ed25135

这有效。因为由于某种原因,在 Cmder 中默认路径是这样的 C:\Users\capit/.ssh/id_ed25135 (有些是反斜杠:“\”,有些是正斜杠:“/”)


Abh*_*k B 6

对于 Mac 上的我来说,以下步骤解决了问题。

1> 打开终端进入用户目录并输入以下命令。

ssh-keygen -p
Run Code Online (Sandbox Code Playgroud)

2> 它会问你

输入密钥为(/Users/您的用户名/.ssh/id_rsa)的文件:给出圆括号中显示的文件路径。

3> 然后它会要求您输入旧密码。写下您的旧密码并输入。当您输入密码时,终端不会显示任何内容。

4> 它会要求您输入新密码

输入新密码(没有密码则为空)如果您不想保留任何密码,只需按 Enter 键即可。

5> 然后它会再次要求您确认相同的密码

再次输入相同的密码,然后再次按 Enter 键。

6> 然后你会收到成功消息

您的身份信息已使用新密码保存。


小智 5

对于 Windows;

  1. 打开一个cmd屏幕写下这个并按回车键。

    ssh-keygen -p

  2. cmd 会询问您旧的密码。写下您的旧密码并输入。当您编写旧密码时,您看不到它。

  3. cmd 将询问您新的密码并进行确认。你可以让它留空。

恭喜!!!