3

У меня есть сервер, на котором запущено несколько "демонов SSH" (фактически Stash и OpenSSH), для каждого из которых нужны разные ключи SSH. Эти демоны слушают на 2 разных портах.

В конфигурации SSH на клиентах (в частности, ~/.ssh/config) можно ли указать порт в директиве Host/Match (или каким-либо другим способом), чтобы я мог переопределить IdentityFile зависимости от порта? Таким образом, ssh myserver -p 22 и ssh myserver -p 23 будут входить в систему с использованием правильных ключей без дополнительной настройки.

2 ответа2

9

Если ваш ssh-клиент достаточно новый, вы можете использовать ключевое слово Match для файла конфигурации, чтобы иметь условную конфигурацию на основе целевого порта.

Match host somehost exec "test %p = 42"
IdentityFile ...

В приведенном выше примере будет применяться строка "IdentityFile" только в том случае, если целевой хост - это "somehost", а целевой порт - 42. Match работает аналогично Host в том смысле, что строки, следующие за ним (до следующей строки соответствия или строки хоста), применяются только к сеансам, которые соответствуют критериям. В этом примере строка Match проверяет, является ли хост "somehost", и также запускает внешнюю команду, которая считается совпадающей, если команда завершается со статусом 0.

Здесь выполняется команда test %p = 42 . «% p» будет заменено значением порта, которое ssh будет использовать до этой точки (либо значение по умолчанию 22, либо значение из командной строки). test также известен как [ ; это утилита командной строки, в основном используемая в сценариях оболочки как часть оператора if . Здесь test используется для проверки, является ли номер порта 42.

Ключевое слово Match ssh_config было добавлено в OpenSSH в версии 6.5 или 6.6. Проверьте страницу ssh_config чтобы узнать, доступна ли она в вашей системе.

3

В вашем файле ~/.ssh/config вы можете создавать своего рода "псевдонимы", которые ссылаются на демоны SSH на разных портах одного и того же сервера. Например:

Host daemon1
HostName host.domain.com
Port 22
IdentityFile ~/.ssh/id_rsa_daemon1

Host daemon2
HostName host.domain.com
Port 23
IdentityFile ~/.ssh/id_rsa_daemon2

Затем вы можете запустить ssh daemon1 или ssh daemon2 для входа в конкретный демон SSH.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .