У меня есть две платформы со многими серверами, к которым я хочу подключиться через ssh.
У меня есть в resolv.conf
search domain1.net domain2.org
Так что у меня есть только имя машины для ввода для ssh .
Я хочу иметь конфигурацию ssh для каждого домена :
Как я могу этого добиться?
Хост , Директивы Hostname , похоже, работают только с тем, что вы вводите в команде ssh, а не с тем, что расширяется с помощью DNS-суффиксов
Я считаю, что OpenSSH МОЖЕТ делать канонизацию. Обратите внимание на следующие параметры на странице руководства ssh_config:
каноническим параметром Пожалуйста, укажите
обратите внимание, для этого может потребоваться более новая версия OpenSSH, чем та, которая у вас есть (у меня 7.4p1).
Как сказал Касперд, на самом деле это невозможно.
Некоторые обходные пути:
Я просто использую некоторые небольшие переменные оболочки для расширения $ e
до example.org
для вещей, к которым я редко обращаюсь. Остальные перечислены в ~ / .ssh / config
в любом случае с коротким именем. Вы используете его так:
ssh www. $ E
При этом вы можете использовать стандартный метод ~ / .ssh / config
.
Другой вариант: напишите небольшой сценарий оболочки или функцию оболочки для ssh, которая перехватывает имя хоста и расширяет его, примерно так:
#! / Bin / bash
hn = `host $ 1 | вырезать -d '' -f 1`
ssh $ hn
Если вы вызовете его с помощью sshwrapper.sh www
, он расширит www
на www.example.org
и будет использовать его для ssh
.
подтверждая то, что сказал @sven, крошечная функция bash может делать то же самое:
ssh() {
declare h=$(host $1 | head -n 1 | cut -d ' ' -f 1)
command ssh $h
}
Поместите это где-нибудь в один из ваших исходных файлов, например .profile, и он всегда исправляет имя из порядка поиска в /etc/resolv.conf
другой подход, который может пригодиться для других использует (относительно) новые функции ssh_config, которые позволяют включать файлы, и даже включение может быть условным.
Я просто собираюсь поделиться запутанным примером из моей конфигурации, который проверяет, что если
Затем он будет включать другой файл, который направляет некоторые ssh-вещи через мой телефон
Match exec "[ -e /dev/serial/by-id/usb-SAMSUNG_SAMSUNG_Android_XXXXXXXX-if01 ] && ! ip route| grep -q ^default"
Include blahblah_termux.ssh
У вас должен быть ~ / .ssh / domain1.ssh & ~ / .ssh / domain2.ssh и включать те, которые основаны на тесте Match (ваш тест, очевидно, будет адаптирован)