ラップトップで新しいSSHキーを作成するときにパスフレーズを設定しました。しかし、私が今気付いているように、SSHを介してリモートの場所( GitとSVN)に1時間に何度もコミットしようとすると、これは非常に苦痛です。
私が考えることができる1つの方法は、SSHキーを削除して新しいものを作成することです。同じキーを保持したまま、パスフレーズを削除する方法はありますか?
ラップトップで新しいSSHキーを作成するときにパスフレーズを設定しました。しかし、私が今気付いているように、SSHを介してリモートの場所( GitとSVN)に1時間に何度もコミットしようとすると、これは非常に苦痛です。
私が考えることができる1つの方法は、SSHキーを削除して新しいものを作成することです。同じキーを保持したまま、パスフレーズを削除する方法はありますか?
短い答え:
$ 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で使用されるプロトコルもサポートしています。
以下を .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 がリモート マシンにコピーされ、リモート キーチェーンに追加されます。