1

2 つの異なる SSH キーで GitHub を使用して、2 つの異なるアカウントにアクセスしたいと考えています。これは問題ありません。構成でホスト名にエイリアスを設定することで簡単にセットアップできます。問題は、この構成が私の SSH 多重化構成と組み合わされたときに発生します。デフォルトの ControlPath をホスト固有の宣言でオーバーライドできないようです。

多分これはそれが機能する方法ですか?多分それはバグですか?私は何か間違ったことをしていますか?

ちなみにMac10.7です。

これが私の設定です:

Host *
  ControlMaster auto 
  ControlPath ~/.ssh/connections/ssh-%r@%h:%p

Host github.com-X
  TCPKeepAlive yes
  ServerAliveInterval 60
  ControlPersist 1h
  Hostname github.com
  User git
  IdentityFile ~/.ssh/id_rsa_X
  IdentitiesOnly yes 
  ControlPath ~/.ssh/connections/ssh-%r@%h-X:%p

Host github.com
  TCPKeepAlive yes
  ServerAliveInterval 60
  ControlPersist 1h

少しいじりましたが、常に Host * 宣言で指定されているように ControlPath を取得するようです。

ssh -T git@github.com-X

id_rsa_X を使用して正しいユーザーとしてログインしますが、ここにドメイン ソケットが作成されます。

~/.ssh/connections/ssh-git@github.com:22

それよりも:

~/.ssh/connections/ssh-git@github.com-X:22

そのため、後で id_rsa を使用して SSH コマンドを発行しようとすると、接続の多重化のために id_rsa_X ユーザーが取得されます。言い換えると:

ssh -T git@github.com

キーが id_rsa_X であるユーザーのハロー メッセージを表示します。

すべての設定を読み取り、間違った ControlPath を使用しようとしていることがわかります。

$ ssh -vT git@github.com-X
OpenSSH_5.6p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /Users/<username>/.ssh/config
debug1: Applying options for *
debug1: Applying options for github.com-X
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/<username>/.ssh/connections/ssh-git@github.com:22" does not exist
<snip>

何か案は?

4

1 に答える 1

1

ユーザーgipsetから ServerFault に関するこの質問に対する素晴らしい回答を得ました。

あまり具体的でないオプションは、 のさらに下に移動する必要があります~/.ssh/config。オプションは最初に適用され、Host *後の衝突オプションによって上書きされることはありません。より具体的であってもです。ただし、で指定されていない新しいオプションHost *が適用されます。ログに表示されていると思います。

ソース: http://linux.die.net/man/5/ssh_config

ssh(1) は、次のソースから次の順序で構成データを取得します。

  1. コマンドライン オプション
  2. ユーザーの設定ファイル (~/.ssh/config)
  3. システム全体の構成ファイル (/etc/ssh/ssh_config)

各パラメータについて、最初に取得された値が使用されます。構成ファイルには、「ホスト」仕様で区切られたセクションが含まれており、そのセクションは、仕様で指定されたパターンのいずれかに一致するホストにのみ適用されます。一致するホスト名は、コマンド ラインで指定されたものです。

各パラメーターの最初に取得された値が使用されるため、より多くのホスト固有の宣言をファイルの先頭近くに指定し、一般的なデフォルトを最後に指定する必要があります

于 2014-07-29T19:12:40.947 に答える