GitとSSH、どのキーが使用されていますか?


93

.sshディレクトリに30個のキー(15個のプライベートキーと15個のパブリックキー)が含まれているとします。

Gitのどこで、特定のリモートリポジトリへの接続に使用されているものを確認できますか?


10
「閉じる」に投票した人は誰でも、この質問は、GITに関する質問がここで許可されているのと同じ理由で、プログラミングに直接関係しています
James Raitsev 2012年

1
間違いなく...これは本当にスーパーユーザーの質問です。ここでの問題はgitではなく、それが実行されているプラ​​ットフォームです。gitは気にしないので、「in git」で問題をチェックすることはできません。これは、sshの使用方法と構成方法にのみ関係します。ssh-agent、あらゆる種類のキー管理システム、使用しているオペレーティングシステム、バージョンなどを使用していますか?
アラファンギオン2012年

回答:


67

冗長モード(別名)ssh -v user@hostでsshを実行すると、大量のデバッグ情報が出力されます。この情報には、ログインしようとしているキーファイルの詳細も含まれています。

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

あなたがGitの自身のステップ4で、これを組み合わせると今SSHのヘルプページssh -vT git@github.comあなたに答えを与えることができます。

注:-iスイッチを使用して、コマンドの実行中にsshに使用するキーファイルを指示することもできます。



1
sshコマンドの標準エラー出力をgrepして、次のようなキーファイルを見つけることもできます。-これにより、作業ssh -vv user@host 2> >(grep Offering)が簡単になります。最後のファイルは公開鍵である必要があります。例:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
Gianfranco P.

3
githubと同じものではありませんgit
ForeverWintr

66

.ssh/configファイル内の次のエントリは問題を解決します

  host git.assembla.com
  user git
  identityfile ~/.ssh/whatever

~/.ssh/whatever秘密鍵へのパスはどこにありますか

さらに、ユーザーとホストはからピックアップすることができます

git push git@git.assembla.com:repo_name.git
         ^__ ^_______________
         user host

したがって、別のホストに別のsshキーを使用したい場合、最初の後に同じことを繰り返すだけでよいでしょうか?アイデンティティファイルは、その前の最初のホストに関係していますか?
MikeSchem 2017

それはケースだと同様に[OK]を、いや、それはそうcyberciti.biz/faq/...
MikeSchem

9

で指定されて.ssh/configいない限り、デフォルトの秘密鍵ファイルが使用されます。

デフォルトのファイルがある~/.ssh/id_rsaか、~/.ssh/id_dsaまたは~/.ssh/identityプロトコルのバージョンによって異なります。


キーが既知のホストに追加されたとき?
mountainLion

6

私の好みに最も実用的だと思います:

GIT_SSH_COMMAND='ssh -v' git …

もちろん、状況によっては、現在のSHELLの環境にエクスポートするだけで、毎回手動で追加する必要がない場合があります。次に、次のようになります。

export GIT_SSH_COMMAND='ssh -v'
git …

man git示唆されているように、SSHを使用したGitの操作に影響を与える環境変数がいくつかあります。によると、オプションをman ssh展開するときにデバッグ情報を取得でき-vます(だけでなく、詳細については、マニュアルを確認してください)。

どのキーが使用されていますか?

出力では、次のようなsmthが表示されます…

debug1: Offering public key: …

…これがあなたのqnへの答えです。


1
はい。これは受け入れられた答えでなければなりません。Windows CMD(ugh)で動作させるには、次を使用しますset GIT_SSH_COMMAND=ssh -v。これは、ssh-config Inlcude-PathがWindowsで次のようになる必要があることを理解するのに役立ちました:Include /C/Users/YourUserName.ssh/configsshを作成し、したがってgitが構成ファイルを使用し、たとえばHOST *エントリを使用してgit / sshが使用するIDファイルを指定します。
icyerasor

5

gitssh接続に使用するだけなのでssh、リモートホストへの接続に使用するキーを使用します。詳細については、~/.ssh/configファイルを参照してください。hostブロックは使用していますIdentityFile使用する秘密鍵を指定するには、ディレクティブを。ssh_config(5)manページには、完全な詳細が含まれています。


うーん..ファイルが私のシステムに存在しません。それをすべきですか?
James Raitsev 2012年

1
@JAMどのOSを使用していますか?また、構成ファイルが/etc/ssh/ssh_config

私はMACOSを使用しています。/etc/ssh_configコメントされたエントリでいっぱいのファイルのように見えるファイルが見つかりました
James Raitsev 2012年

@sarnold~/.ssh/config自分で作成できます。
xdazz 2012年

4

これはスーパーエッジかもしれませんが、実行ssh -vT git@github.comした後/root/.ssh、キーをチェックしていることがわかり、ホームディレクトリをチェックすることを期待していたので、rootとしてログインしていることに気付きました。


この手法は、とりわけ同じssh尋問方法が正しい解決策です。ありがとう。
eigenfield

1

リモートサーバーで、sshd_configファイルを編集し、LogLevelをINFOからVERBOSEに変更して、sshを再起動します。

これで、ログファイルには、各ユーザーの認証に使用されたキーのフィンガープリントが保持されます。

Ubuntuでは、これらのファイルは次のとおりです。

/etc/ssh/sshd_config
/var/log/auth.log

ただし、別のディストリビューションでは異なる場合があります。それらの場所をグーグルで検索するだけです(たとえば、/ var / log / secureを使用する人もいます)。

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