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


23

マニュアルページには次のように記載されています。

ホスト

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

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

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

HostName

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

たとえば、GitHub用のSSH Configを作成する場合、HostとHostNameはそれぞれ何にする必要がありますか?


3
本質的に:SSHを呼び出すときにHostユーザーがCLIで入力として与える文字列です。サーバーに接続しようとするときにHostNameSSHクライアントがネットワーク経由で出力する文字列です。
サンパブロクパー

回答:


15

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

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

ホスト名の場合:男が言うように、ホストの略語を指定できます。たとえば、次のように~/.ssh/config見える場合

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

次に、入力するとき

  • ssh host1実際にhost1.example.comにログインします
  • ssh host2anotherdomain.comへのログイン

2番目の~/.ssh/config例で「ホスト」ではなく「ホスト名」を意味していると思いますか?
デイブ

6

簡単な使用法:

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.


1

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

ホストはコマンドライン引数を指定し、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 *

HostName%h.my.proj.domain.com

ユーザーmy-proj-user

IdentityFile〜/ .ssh / my-proj-id-rsa

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

ssh my-proj-host-1234

構成がなければ、それは

ssh -i〜/ .ssh / my-proj-id-rsa my-proj-user@my-proj-host-1234.my.proj.domain.com

タイピング(およびタイプミス)を少し節約します。

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