Mac OS Xで異なるポートを使用するようにSSHクライアントを構成する


1

.ssh/configSSHで異なるサーバーに接続するように構成されたファイルがあります。

###
# Identity files
###
IdentityFile ~/.ssh/id_dsa_home
IdentityFile ~/.ssh/id_dsa_github
IdentityFile ~/.ssh/id_rsa_bitbucket

###
# Global options
###
PasswordAuthentication no
PubkeyAuthentication yes

Host *
  Port 22

Host icarus
  User elitalon
  HostName 192.168.1.1
  Port 54301

Host zeus
  User elitalon
  HostName 192.168.2.1
  Port 54302

Host github
  User git
  HostName github.com

Host bitbucket
  User git
  HostName bitbucket.org

この構成は、以前は正常に機能していました。ただし、Mac OS X Mountain Lionにアップグレードしたため、SSHはエントリの特定のPort値に関して異なる動作をしHostます。

  1. zeusSSH に接続しようとすると、54301ではなく常にポート22が使用されます。
  2. エントリなしで削除Port 22して接続しようとすると、SSHは最初の値セット(この例では54301)を使用します。HostPortPort

さまざまな組み合わせを試した後、SSHはすべての構成ファイルを処理するように見えますが、Port指定された最初の値のみを取ります。これは、manページによると予期される動作です。

各パラメーターに対して、最初に取得された値が使用されます

しかし、manページには、

構成ファイルには「ホスト」仕様で区切られたセクションが含まれており、そのセクションは仕様で指定されたパターンのいずれかに一致するホストにのみ適用されます。

そのため、Port値を指定しないと、実際に値があるセクションでのみデフォルトのポートが変更されると考えましたPort

それでは、Host別の値が指定されている場合を除き、ポート22を使用するようにエントリを設定するにはどうすればよいですか?

ありがとう!

回答:


4

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

そう

Host *
  Port 22

最後に移動する必要があります。


1

他のすべてのホスト宣言の後に「Host *」宣言を置いて、それらがオーバーライドされないようにします。ただし、デフォルトではSSHがポート22を使用するため、この宣言はまったく必要ありません。

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