SSH Config の Host と HostName の違いは何ですか?

SSH Config の Host と HostName の違いは何ですか?

man ページには次のように書かれています:

ホスト

Host 以降の宣言 (次の Host キーワードまで) を、キーワードの後に​​指定されたパターンの 1 つに一致するホストのみに制限します。複数のパターンを指定する場合は、空白で区切る必要があります。パターンとして 1 つの `*' を使用すると、すべてのホストにグローバル デフォルトを提供できます。ホストは、コマンド ラインで指定されたホスト名引数です (つまり、名前は一致前に正規化されたホスト名に変換されません)。

パターン エントリは、感嘆符 (`!') を前に付けることによって否定できます。否定されたエントリが一致した場合、行内の他のパタ​​ーンが一致するかどうかに関係なく、ホスト エントリは無視されます。したがって、否定された一致は、ワイルドカード一致の例外を提供するのに役立ちます。>

パターンの詳細については、「パターン」を参照してください。

ホスト名

HostName ログインする実際のホスト名を指定します。これは、ホストのニックネームまたは省略形を指定するために使用できます。ホスト名に文字シーケンス `%h' が含まれている場合、これはコマンドラインで指定されたホスト名に置き換えられます (これは、修飾されていない名前を操作する場合に便利です)。デフォルトは、コマンドラインで指定された名前です。数値 IP アドレスも許可されます (コマンドラインと HostName 仕様の両方で)。

たとえば、GitHub 用の SSH Config を作成する場合、Host と HostName はそれぞれ何にすればよいでしょうか?

答え1

github.comの場合は~/.ssh/config次のようになります

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

ホスト名の場合: man が言うように、ホストの省略形を指定できます。たとえば、~/.ssh/config次のようになります

Host host1
    HostName host1.example.com
Host host2
    HostName anotherdomain.com

次に入力すると

  • ssh host1実際にログインするホスト1.example.com
  • ssh host2ログイン別のドメイン

答え2

簡単な使用法:

Host実際のホスト名であり、HostName

または

Hostはホストのニックネームで、HostNameは実際のホスト名です。

簡単な例:

$ cat ~/.ssh/config
Host dev
    Hostname <hostname>
    User <username>
    IdentityFile <path_to_private_key>

$ ssh dev
# Equivalent to "ssh -i <path_to_private_key> <username>@<hostname>"

注: マニュアル ページは技術的には正しいのですが、少し言葉遣いがおかしなだけです。わかりやすくするために、もう少し言葉を追加したいと思います。HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.

答え3

最近、ホストとホスト名を使って何かしたいと思ったのですが、正確な構文を忘れてしまいました... しかし、それについてグーグルで検索しても混乱し、マニュアルページもあまり役に立ちませんでした。そこで、同じニーズを持つ人がいると仮定して、私のヒントを紹介します。

Host はコマンド ライン引数を指定します。これは、a) 実際のホスト名/IP、b) 省略形、c) 別名として考えることができます。HostName は、接続先のマシンの実際のホスト名/IP です。HostName フィールドでは、コマンド ラインで指定するホスト名文字列として %h を使用できます。(これは、私の例で使用したい部分です。)

たとえば、ホスト名が my-proj-host-... で始まり、ドメイン .my.proj.domain.com にあるホストのセットがあり、特定の SSH キー my-proj-id-rsa と特定のユーザー ID my-proj-user を使用してログインする必要がある場合、作業を簡単にするために、次のコードを ~/.ssh/config ファイルに追加します。

ホスト my-proj-host*

ホスト名 %h.my.proj.domain.com

ユーザー my-proj-user

アイデンティティファイル ~/.ssh/my-proj-id-rsa

今、私は入力することができます

ssh my-proj-host-1234

設定がなければ、それは

ssh -i ~/.ssh/my-proj-id-rsa[メールアドレス]

入力(およびタイプミス)を少し節約できます。

関連情報