複数のsshキーを使用する方法の解決策を探していましたが、.sshディレクトリ内の構成ファイルで機能するが、Windowsでは機能しないことがわかりました。
私の問題は、秘密鍵を使用してgitサーバーにアクセスしていることです。したがって、次のようになります。ssh://[email protected]/directory、TortoiseGitを使用している場合は正常に動作します。秘密鍵を選択する可能性。
しかし、IntelliJ IDEAでgit repを使用し、gitネイティブシェルを使用するオプションがあります。id_rsaと呼ばれるキーをに入れると、それも機能します。 sshフォルダー:複数のsshキーを使用したいので(私のキーは "id_rsa_test"という名前を取得します。それで、通常のgitサーバーで動作するようにWindowsで.ssh/configファイルを構成するにはどうすればよいですか?
まだ見つかったほとんどの例は、githubで使用するためのものです。
「Git for Windows」を使用する場合
>cd c:\Program Files\Git\etc\ssh\
次のssh_configに追加します。
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_test
追伸sshバージョン7.2以上が必要です(リリース日2016-02-28)
オプションIdentityFile
があり、これを~/.ssh/config
ファイルを作成し、各ホストのキーファイルを指定します。
Host host_with_key1.net
IdentityFile ~/.ssh/id_rsa
Host host_with_key2.net
IdentityFile ~/.ssh/id_rsa_test
詳細: http://linux.die.net/man/5/ssh_config
http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/ もご覧ください
これらの手順はLinuxで正常に機能します。 Windowsでは、彼らは今日私のために働いていません。
私に役立つ答えを見つけました。おそらくこれはOPに役立つでしょう。これを解決しようとして、たくさんのカエルにキスをしました。 「ssh-add」を使用して、新しい非標準名のキーファイルを追加する必要があります。魔法の弾丸の説明は次のとおりです。 新しいSSHキーを生成し、ssh-agentに追加する 。魔法の検索用語が「Windowsでssh-addを使用してキーを追加」であることがわかれば、他のリンクがたくさん見つかります。
Windowsを頻繁に使用している場合、これを永続的にする方法を見つけるでしょう。 https://github.com/raeesbhatti/ssh-agent-helper 。
Sshキーエージェントは、デフォルトの「id_rsa」および認識している他のキーを探します。非標準の名前で作成したキーは、sshキーエージェントに追加する必要があります。
まず、Git BASHシェルでキーエージェントを起動します。
$ eval $(ssh-agent -s)
Agent pid 6276
$ ssh-add ~/.ssh/Paul_Johnson-windowsvm-20180318
Enter passphrase for /c/Users/pauljohn32/.ssh/Paul_Johnson-windowsvm-20180318:
Identity added: /c/Users/pauljohn32/.ssh/Paul_Johnson-windowsvm-20180318 (/c/Users/pauljohn32/.ssh/Paul_Johnson-windowsvm-20180318)
次に、レポジトリのクローンを作成するディレクトリに移動します
$ cd ~/Documents/GIT/
$ git clone [email protected]:test/spr2018.git
Cloning into 'spr2018'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
私はこれと長い間戦いました。
ここに私が途中で試した他のものがあります
最初は、ファイルとフォルダーのアクセス許可が原因であると確信していました。 Linuxでは、フォルダーが700に設定されていない場合、.ssh設定が拒否されるのを確認しました。Windowsには711があります。Windowsでは、アクセス許可を700にする方法が見つかりません.
それと戦った後、私はそれが問題ではないはずだと思います。その理由は次のとおりです。キーの名前が「id_rsa」の場合、gitは機能します! Gitはサーバーに接続できます。ただし、キーファイルに別の名前を付けて、一貫性のある方法で構成ファイルを修正すると、何があってもgitは接続に失敗します。そのため、許可は問題ではないと思います。
この問題をデバッグするためにできることは、構成されたキーを使用してsshコマンドからの詳細な出力を監視することです。
Git bashシェルで、これを実行します
$ ssh -T git@name-of-your-server
ここで、ユーザー名は「git」にする必要があります。キーがセットアップされ、設定ファイルが見つかった場合、Linuxシステムでテストしたばかりのように、次のように表示されます。
$ ssh -T [email protected]
Welcome to GitLab, Paul E. Johnson!
一方、Windowsでは、「ssh-add」を適用する前と同じトラブルが発生します。 gitのパスワードが必要ですが、これは常に失敗します。
$ ssh -T [email protected]
[email protected]'s password:
繰り返しますが、手動でキーを「id_rsa」および「id_rsa.pub」にコピーした場合、これは正常に機能します。 ssh-addを実行した後、Windows Git BASHで勝利を確認します。
$ ssh -T [email protected]
Welcome to GitLab, Paul E. Johnson!
あなたがここにいたら、私が喜びで踊っている音が聞こえます。
何が間違っていたのかを理解するために、「-Tvv」で「ssh」を実行できます
Linuxでは、成功すると次のように表示されます。
debug1: Offering RSA public key: pauljohn@pols124
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp SHA256:bCoIWSXE5fkOID4Kj9Axt2UOVsRZz9JW91RQDUoasVo
debug1: Authentication succeeded (publickey).
Windowsでは、これが失敗すると、デフォルト名を探します。
debug1: Found key in /c/Users/pauljohn32/.ssh/known_hosts:1
debug2: set_newkeys: mode 1
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 4294967296 blocks
debug2: key: /c/Users/pauljohn32/.ssh/id_rsa (0x0)
debug2: key: /c/Users/pauljohn32/.ssh/id_dsa (0x0)
debug2: key: /c/Users/pauljohn32/.ssh/id_ecdsa (0x0)
debug2: key: /c/Users/pauljohn32/.ssh/id_ed25519 (0x0)
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_rsa
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_dsa
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_ed25519
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
[email protected]'s password:
それは私が必要とするヒントでした、それは私の〜/ .ssh/configファイルを見つけると言いますが、私がそれを試して欲しいキーを決して試しません。
私はWindowsを長い間一度しか使用していないので、イライラしています。たぶん、Windowsを常に使用している人はこれを修正して忘れてしまうかもしれません。
私にとっては、Windowsの~/.ssh/config
ディレクトリのLinuxシステムのc:\Program Files\Git\etc\ssh\
ディレクトリにあるconfig
ファイルを追加するだけでした。
その後、Linuxで通常使用していたすべてのエイリアスと設定を、 Git Bash でSSH経由で接続またはプッシュすることができました。