unix 如何删除SSH密钥的密码而无需创建新密钥?

kx5bkwkv  于 2023-01-05  发布在  Unix
关注(0)|答案(7)|浏览(195)

在我的笔记本电脑上创建一个新的SSH密钥时我设置了一个密码,但是,正如我现在意识到的,当你试图在一个小时内多次通过SSH向远程位置提交(GitSVN)时,这是相当痛苦的。
我能想到的一个方法是删除我的SSH密钥并创建新的。有没有一种方法可以删除密码短语,同时仍然保留相同的密钥?

crcmnpdw

crcmnpdw1#

简短回答:

$ ssh-keygen -p

这将提示您输入密钥文件位置、旧密码短语和新密码短语(可以将其保留为空以表示没有密码短语)。
如果您想在一行中完成所有操作而不需要提示,请执行以下操作:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
    • 重要提示:**注意,执行命令时,命令通常以纯文本形式记录在~/.bash_history文件(或类似文件)中,包括提供的所有参数(即本例中的密码)。因此,建议您使用第一个选项,除非您有特殊原因不这样做。

但是请注意,您仍然可以使用-f keyfile,而不必指定-P-N,并且密钥文件默认为~/.ssh/id_rsa,因此在许多情况下,甚至不需要它。
您可能需要考虑使用ssh-agent,它可以暂时缓存密码短语,最新版本的gpg-agent也支持ssh-agent使用的协议。

jfgube3f

jfgube3f2#

$ ssh-keygen -p对我很有效
已打开git bash。$ ssh-keygen -p
按回车键进入默认位置。
输入旧密码
输入新密码-空白
确认新密码-空白
BOOM输入git push密码的痛苦消失了。
谢谢!

juzqafwq

juzqafwq3#

您可能希望将以下内容添加到.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

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

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

这会将生成的id复制到远程计算机并将其添加到远程密钥链。
你可以阅读更多的herehere

3yhwsihp

3yhwsihp4#

要更改或删除密码短语,我经常发现最简单的方法是只传入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.

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

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.
ippsafx7

ippsafx75#

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

ssh-keygen -K

将此添加到~/.ssh/config

UseKeychain yes
bpsygsoo

bpsygsoo6#

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

jtjikinw

jtjikinw7#

在我的窗口中,它一直显示“id_ed25135:没有这样的文件或目录”在输入上述命令。所以我去了文件夹,复制路径内的文件夹资源管理器和添加“\id_ed25135”在末尾。
这是我最后打字和工作:
注册机-p -f C:\用户\约翰. ssh\id_ed25135
这是可行的,因为出于某种原因,在Cmder中默认路径类似于C:\Users\capit/.ssh/id_ed25135(有些是反斜杠:“\”和一些正斜杠:“/”)

相关问题