新しいキーを作成せずにSSHキーのパスフレーズを削除するにはどうすればよいですか?


1033

ラップトップで新しいSSHキーを作成するときにパスフレーズを設定しました。しかし、私が今理解しているように、1時間に何度もSSHを介してリモートの場所(GitおよびSVN)にコミットしようとすると、これは非常に苦痛です。

私が考えることができる1つの方法は、SSHキーを削除して新しいキーを作成することです。同じキーを維持しながら、パスフレーズを削除する方法はありますか?


9
厳密な答えは、実際にはTorsten Marekの応答だと思います。ssh-agentトリックはあなたが探しているものかもしれませんが、それは別の質問への答えです。
タールデート2008

1
パスフレーズは、SSH秘密鍵をロック解除するための単なる鍵ではなく、暗号化メカニズムの一部です。1つはSSHキーで、もう1つは手動で入力したパスフレーズです。両方の部分が正しい場合にのみ、その場で生成された複合キーが有効になります。したがって、他のパスフレーズは他のSSHキーに対応します(「他のパスフレーズ」の特別な場合はパスフレーズはありません)。
ポール

97
そのような質問を閉じることは、プログラミング言語での副作用が「純粋」であるかどうかという理由で許可されるべきかどうかを議論するようなものです。純粋主義者は常に無邪気に実行しますが、他の人たちはそれが役立つ機能であり、人生を楽にするので、いまいましいことをしません。厳密にはプログラミングに関連していなくても、sshが必要です...そのような質問を閉じないでください。:|
sjas 2014

回答:


1933

簡潔な答え:

$ ssh-keygen -p

これにより、キーファイルの場所、古いパスフレーズ、および新しいパスフレーズ(パスフレーズがない場合は空白のままにすることができます)を入力するように求められます。


プロンプトなしですべてを1行で実行したい場合は、次のようにします。

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

重要:コマンドを実行すると、通常、~/.bash_history提供されたすべての引数(この場合はパスフレーズ)を含むプレーンテキストでファイル(または同様のファイル)に記録されます。したがって、特に理由がない限り、最初のオプションを使用することをお勧めします。

ただし、nor -f keyfileを指定しなくても使用でき、キーファイルはデフォルトでに設定されているため、多くの場合、それも不要です。-P-N~/.ssh/id_rsa

しばらくの間パスフレーズをキャッシュできるssh-agentの使用を検討してください。gpg-agentの最新バージョンは、ssh-agentで使用されるプロトコルもサポートしています。


464
明確ssh-keygen -pに言うと、ターミナルで実行するだけです。次に、キーファイル(デフォルトでは正しいファイル~/.ssh/id_rsa)、古いパスフレーズ(現在のものを入力)、および新しいパスフレーズ(何も入力しない)の入力を求められます。
Henrik N

34
例 :ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa
Fedir RYKHTIK 2016年

24
-1は、ユーザーが自分のパスワードを端末に入力し、からアクセスできるようにするため~/.bash_historyです。次のように入力することをお$ cd ~/.ssh && ssh-keygen -f id_dsa -p
勧めします。– betoharres

5
シェルにコマンドを入力すると、(白い)スペースが開始れた場合、そのコマンドは~/.bash_hstory IEに記録さないことに注意してください。`ssh-keygen -p -P oldpassphrase -N" "-f〜/ .ssh / id_rsa`を使用すれば、問題ありません(他のキーロガーがない場合)。あなたはまた、可能性が履歴から、レコードを取り除く ...
巨大

14
これは既存のファイルを上書きし、新しい場所を要求しないという行を追加する価値があるかもしれません。
Lars Francke 2017

46

$ ssh-keygen -p 私のために働いた

git bashを開きました。貼り付けました:$ ssh-keygen -p

Enterキーを押してデフォルトの場所を指定します。

古いパスフレーズを入力してください

新しいパスフレーズを入力してください-空白

新しいパスフレーズを確認-空白

BOOM git pushのパスフレーズを入力する手間がなくなりました。

ありがとう!


Enter $ ssh-keygen -pキーを押したときにキーがデフォルトの場所(/Users/yourname/.ssh/id_rsa)にない場合は/Users/yourname/.ssh/yourkey、プロンプトが表示されたら入力することで応答できます
Chigozie Orunta

37

ログイン時にssh-agentを起動する.bash_profile(または同等のもの)に以下を追加することができます。

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がリモートマシンにコピーされ、リモートキーチェーンに追加されます。

あなたはここここでもっと読むことができます


7
最新のディストリビューションでは、ssh-agentをすぐに使い始めませんか?
Troels Arvin

一部のLinuxディストリビューション(Ubuntu、Debian)では、以下を使用できます。ssh-copy-id -i〜/ .ssh / id_dsa.pub username @ hostもちろん、その方法でアクセスできると仮定します。そして、それは2008年からですが、おそらくid_rsa.pubを参照するように編集する必要があります(そうすれば編集できますが、他の人の作品にそれを行うのは快適ではありません。
プリフタン

@TroelsArvinはい。しかし、それが殺されることもあります(私が遭遇した状況は頭に浮かびませんが、たぶんX11に問題があり、再起動する必要がない限り...それはそのようなインスタンスの1つかもしれません)。その場合は、それを「再作成」する必要があります。
プリフタン

8

パスフレーズを変更または削除するには、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.

3

Windowsでは、PuttyGenを使用して秘密鍵ファイルをロードし、パスフレーズを削除してから、既存の秘密鍵ファイルを上書きできます。


2

マックあなたは透明、それを利用して、あなたのキーホルダー、のあなたのプライベートのssh鍵のパスフレーズを保存することができます。ログインしている場合は使用できます。ログアウトしているときは、rootユーザーは使用できません。パスフレーズを削除することは、ファイルを持っている人なら誰でも使用できるため、お勧めできません。

ssh-keygen -K

これを追加 ~/.ssh/config

UseKeychain yes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.