web-dev-qa-db-ja.com

新しいキーを作成しなくてもSSHキーのパスフレーズを削除する方法を教えてください。

ラップトップで新しいSSHキーを作成するときにパスフレーズを設定しました。しかし、私が今認識しているように、SSHを使って( Git および _ svn _ )を1時間に何度もコミットしようとすると、これは非常に困難です。

私が考えることができる一つの方法は私のSSHキーを削除して新しいものを作成することです。それでも同じキーを保持したままパスフレーズを削除する方法はありますか?

802
btbytes

短い答え:

$ 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によって使用されるプロトコルもサポートしています。

1540
Torsten Marek

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

もっと読むことができます ここ そして ここ

33
mlambie

$ ssh-keygen -pは私のために働きました

Git bashをオープンしました。貼り付け:$ ssh-keygen -p

デフォルトの場所を入力してください。

古いパスフレーズを入力

新しいパスフレーズを入力 - BLANK

新しいパスフレーズを確認します - BLANK

Git Push用のパスフレーズを入力するという苦痛はなくなりました。

ありがとうございます。

14
Karan