Яка різниця між Host та HostName у SSH Config?


23

Сторінка чоловіка говорить про це:

Господар

Хост Обмежує наведені нижче декларації (до наступного ключового слова хоста) лише для тих хостів, які відповідають одному з шаблонів, наведених після ключового слова. Якщо надано більше одного шаблону, їх слід розділити пробілом. Один `* 'як шаблон може бути використаний для забезпечення глобальних стандартних параметрів для всіх хостів. Хост - це аргумент імені хоста, вказаний у командному рядку (тобто ім'я не перетворюється на канонізоване ім'я хоста перед узгодженням).

Запис шаблону може бути відхилено, додавши до нього знак оклику (`! '). Якщо заперечений запис збігається, то запис хост ігнорується, незалежно від того, чи відповідають інші шаблони лінії. Отримані відповідники корисні, щоб забезпечити винятки для маткових матчів.>

Див. PATTERNS для отримання додаткової інформації про шаблони.

Ім'я хоста

HostName Вказує справжнє ім'я хоста для входу. Це можна використовувати для введення псевдонімів або скорочень для хостів. Якщо ім'я хоста містить послідовність символів `% h ', то це буде замінено на ім'я хоста, вказане в командному рядку (це корисно для маніпулювання некваліфікованими іменами). За замовчуванням - це ім'я, вказане в командному рядку. Числові IP-адреси також дозволені (і в командному рядку, і в специфікаціях HostName).

Наприклад, коли я хочу створити конфігурацію SSH для GitHub, що повинні бути Host та HostName відповідно?


3
По суті: Hostце рядок, який користувач дає як вхід для CLI при виклику SSH; HostNameце рядок, який SSH-клієнт буде виводити через мережу при спробі підключення до сервера.
sampablokuper

Відповіді:


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 host2увійдіть на сторінку otherdomain.com

Я здогадуюсь, що ви мали на увазі "Ім'я хоста" замість "Хоста" у своєму другому ~/.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>"

Примітка: Сторінка man технічно коректна, вона просто сформульована трохи дивним чином. Я додам ще кілька слів для наочності:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.


1

Нещодавно я хотів щось зробити з іменем хоста і хостом, але забув точний синтаксис ... але гуглінг з цього приводу був безлад, і сторінка man не була надто корисною. Отже, якщо припустити, що є й інші, хто має таку саму потребу, ось мої примхи.

Хост вказує аргумент командного рядка і може розглядатися як а) фактичне ім'я хоста / IP, б) скорочення, в) псевдонім. HostName - це справжнє ім’я хоста / IP машини, до якого ви підключаєтесь. У полі HostName ви можете використовувати% h як рядок імені хоста, який ви вказали в командному рядку. (Це була частина, яку я хотів використати у своєму прикладі.)

Скажімо, у вас є набір хостів, де ім'я хоста починається з my-proj-host -..., і всі вони в домені .my.proj.domain.com, і мені потрібно ввійти до них за допомогою конкретного ключа ssh my-proj-id-rsa та конкретний ідентифікатор користувача my-proj-user. Щоб полегшити своє життя, я додав би наступний файл у ~ / .ssh / config файл

Хост мій-proj-хост *

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

заощаджуючи трохи набравши текст (та помилки друку).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.