Конфігурація підстановки SSH для розширеного імені хоста


25

Я хочу мати в моєму конфігурації SSH підстановку, щоб встановити моє ім'я користувача за замовчуванням для певного значення для всіх хостів певного домену. Але я також хочу мати короткі імена для деяких конкретних хостів. Я очікував, що щось подібне спрацює:

Host *.mydomain.com
    User myusername
Host host1
    Hostname host1.mydomain.com

За допомогою цих налаштувань, якщо я набираю ssh host1.mydomain.comйого, він оцінює myusername@host1.mydomain.com, але якщо я вводить, ssh host1він не застосовує мої налаштування користувача, і я замість цього бачу mylocalusername@host1.mydomain.com.

Чи є спосіб зрівняти підстановку з остаточним розширеним іменем хоста, щоб я міг набрати коротку або довгу форму та отримати однакові результати?


Що робити, якщо ви переключите замовлення, поставивши підстановку на друге місце.
емітувати

Ви пробували? Я майже впевнений, що ви отримаєте правильне ім’я користувача з доменом неправильно, якщо що.
Mu Mind

Я не пробував цього, тому я зробив коментовану відповідь як щось, щоб спробувати, замість спростуючої відповіді.
емітувати

Відповіді:


13

Просто використовуйте:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Альтернативні візерунки надаються розмежувальним бланком у рядку Хост .
  • Застосовуються всі відповідні шаблони хостів .
  • Якщо опція трапляється кілька разів, використовується лише 1-а частота

3
Це економить трохи набравши принаймні. Здається, що ви не знаєте жодного способу уникнути дублювання інформації домену?
Mu Mind

Було б чудово, якби SSH міг просто спробувати додати домен за замовчуванням, тобто "lan" або "mycompany.com", замість того, щоб жорстко кодувати його у файлі конфігурації.
Саустроп

18

Ви можете просто встановити CanonicalizeHostnameв yesдо повторної обробки ssh_config з канонічним ім'ям хоста вашого псевдоніма. Наприклад:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

Крім того, якщо ви також хочете також перезаписати імена хостів, ви можете використовувати Matchзамість того, Hostщоб відповідати лише канонічним іменам хостів. Наприклад, у:

Match canonical host="*.mydomain.com"
    User myusername

Host host2.mydomain.com
    HostName host2.otherdomain.com

Директива користувача не буде встановлена ​​під час підключення до host2.mydomain.com.


Зауважте, що є ще старі версії ssh, які не підтримують ці параметри - якщо ви натрапите на одну з таких, як я, рішення Host все одно буде працювати.
Kyrstellaine

2

Використання CanonicalDomains також буде працювати.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Якщо ви хочете мати коротке ім’я для певного хоста, наприклад:

Host h
Hostname host1

Однак я б не рекомендував таке ім'я коротке.


1

Ви можете використовувати% h.mydomain.com у своєму .ssh / config.


 Host host?
 User myusername
 Hostname %h.mydomain.com

Host host?? User myusername Hostname %h.mydomain.com

Host host??? User myusername Hostname %h.mydomain.com

Тепер ви можете зробити:

ssh хост1
замість
ssh host1.mydomain.com
ssh хост10
замість
ssh host10.mydomain.com
і ssh хост100

З повагою, Берт

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