WindowsでSSHキーのパスフレーズをGitに表示させないようにするにはどうすればよいですか?


43

私はgit bashを使用しており、ssh-keygenを使用してsshキーをセットアップし、repo gitで何かをするたびにのパスフレーズを尋ねます/c/Users/jankiewj/.ssh/id_rsa。そのパスフレーズを無効にする方法はありますか。


serverfaultのかもしれないのヘルプにこのページserverfault.com/questions/194567/...

@Radooは役に立たなかった。
jcubic

回答:


56

これはgit bashで実行できます:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

2番目のコマンドでパスフレーズを要求しますが、それだけです。追加のアクション(パスフレーズが必要だった)を実行するたびに、パスフレーズが要求されることはありません(以下のスクリーンショットの例を参照してください)。

Windowsのgit bashにパスフレーズを追加する


7
git bashを閉じたらすぐにもう一度入力する必要があります...永続的な解決策はありますか?
ブラック

@Black bashセッションごとです。gitbash .bashrcを開くたびにプロンプ​​トが表示され、そのセッションではすべて設定されています。
-jcubic

.bashrcには正確に何を入れますか?.bashrcはどこにありますか?
ブラック

編集:決して気にしないで、yourselvファイルを作成~/.bashrcし、投稿の行をそこに入力して保存する必要があります:) thx!
ブラック

特にで上記の行を使用する代わりに.bashrc、スクリプトを使用して、.bash_profileまたはのいずれかに配置します.profileここに私の主要部分の抜粋があり.bash_profile、それはまだ答えを探している人のためにこれを解決する必要があります。以下の回答に似ています。スクリプトの先頭でをロードしますが.bashrc、該当しない場合はそのままにしておきます。注:id_rsaプライベートSSHキー、および場合によってはパスに名前を付けたものへの参照を変更する必要があります。
Rockin4Life33

9

少し優れた永続的な解決策は、Windowsでgit bashを開くときにssh-agentを自動的に起動することです。以下を.profileまたは.bashrcにコピーして貼り付けることができます。私はそれを.profileに置くことを好む

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

この解決策は、このgithubヘルプ記事から引用したものです


にシンプルなコードを入れましたが、.bashrcあなたのソリューションはどう違いますか?Windows bashでは、各シェルは独立しているため、シェルの実行時にエージェントが実行されることはありません。
jcubic

解決策は、コードを.bashrc。sshパスフレーズの初回プロンプトのみ。私の命を守りました。ありがとうございました。
ベンAsmussen

おかげで私の命は大いに救われました
ガムル

これは、永続的であり、OPが求めていたと思うものをよりよく満たす解決策を提示するため、実際に受け入れられた答えであるはずです。
リチャードD

起動時に誤って間違ったパスワードを入力した場合はどうすればよいですか?編集:superuser.com/a/271673/647110に基づいて、ssh-add -Dすべてのキーを削除できます。
Nils Guillermin

1

推奨するかどうかはわかりませんが、キーを作成してパスワードの設定を求められたら、Enterキーを押してパスワードをスキップします。

使用方法については、このリンクをご覧くださいssh-keygenhttps : //help.github.com/articles/working-with-ssh-key-passphrases/

おそらくssh-agent何らかの形であなたを助けることができます。しかし、あなたの現在のシステムを知らずに確信はありません。


4
間違いなく良い答えではありません
Kennet Celeste

Windows 10でそれを解決する唯一の方法でした。「新しいSSHキーを生成してssh-agentに追加する」githubガイドのすべての手順を実行した後、常にパスフレーズを要求されました。追加した後でも。mvn release:performフェーズではパスフレーズを提供せずにリリースタグをチェックアウトしようとするため、その動作は私のMavenデプロイメントフローを壊していました。そのため、この問題はパスフレーズをクリアするだけで解決しました。
フェルナンドミゲルカルヴァリョ

-3

リポジトリの場所 " ssh-keygen -p " でこのgitコマンドを入力します。これにより、キーファイルの場所、古いパスフレーズ、および新しいパスフレーズ(パスフレーズを持たない場合は空白のままにすることができます)の入力を求められます。新しいパスワードには何も入力しないでください。パスフレーズが削除されます


1
空白のパスワードを残すことは安全ではなく、多くの企業の開発者は制限のために空白のパスフレーズを持つことはできません。これは不十分な回避策であり、OPの問題の解決策ではありません。
16:06のcbaldan

ラメかもしれませんが、ローカルでの使用のみ、Tasty and expeditious™
Jim P
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.