Как настроить конфигурацию SSH для захвата части имени хоста ssh и использования в качестве переменной?

Я использую SSH в нескольких центрах обработки данных, которые настроены одинаково. Каждый центр обработки данных имеет Jumpbox, а за ним есть доступ к различным серверам баз данных и т. Д.

Трудно вручную указать записи для всех этих серверов, когда они почти идентичны в центрах обработки данных, кроме IP-адреса jumpbox. Поэтому я хотел бы настроить мой файл .ssh / config так, чтобы я мог ввести datacenter_name-server_behind_jumpbox и заставить SSH захватить datacenter_name с передней стороны хост (чтобы я мог повторно использовать его в ProxyCommand .

Например, если я хочу получить доступ к серверу Maria в центре данных1, я бы создал SSH-запись для jumpbox с именем ] datacenter1 . Затем для сервера Maria, стоящего за ним, я бы установил что-то вроде:

Host %dc%-maria
    Hostname maria
    User jeff
    ProxyCommand ssh -q -W %h:%p %dc

Таким образом, мне нужно только настроить одну запись для каждого типа сервера, расположенного за Jumpbox, и он автоматически знает, какой прыжковая панель центра обработки данных для попадания.

Возможно ли что-то подобное?

5
задан 9 May 2016 в 21:52
3 ответа

Я добавляю фальшивый суффикс к имени хоста с разными прокси-хостами

Host *.dc1
    ProxyCommand ssh -q %r@dc1 -W %h:%p

Host *.dc2
    ProxyCommand ssh -q %r@dc2 -W %h:%p

Затем делаю что-то вроде ssh server1.dc1, и он будет использовать прокси-хост.

Вы можете добавить записи Host для пользовательские настройки вроде этого:

Host server1.*
    User jeff
4
ответ дан 3 December 2019 в 01:30

Вы можете запустить сценарий как пользовательскую ProxyCommand и выполнять свою работу до реальной ProxyCommand:

.ssh / config :

Host *-maria
    Hostname maria
    User jeff          
    ProxyCommand /bin/datacenter_ssh.sh %h %p

datacenter_ssh.sh :

#!/bin/bash
COMBINED=$1
DATACENTER=$(echo $COMBINED | cut -d'-' -f1)
SERVER=$(echo $COMBINED | cut -d'-' -f2)
PORT=$2

ssh -q -W $SERVER:$PORT $DATACENTER
2
ответ дан 3 December 2019 в 01:30

У меня похожая ситуация, и я делаю что-то вроде этого:

# configuration for the datacenter, can add entries for each datacenter
Host datacenter_name
    HostName <datacenter_ip>
    User <datacenter_user>
    IdentityFile <datacenter_keyfile>

# usage match: datacenter_name-server_behind_jumpbox
Host *-*
    User <server_behind_jumpbox user>
    IdentityFile <server_behind_jumpbox keyfile>
    Port <server_behind_jumpbox port>
    ProxyCommand ssh $(echo %h | cut -d- -f1) nc $(echo %h | cut -d- -f2) %p"

Конечно, вы также можете сделать что-то более похожее на то, что вы описали

# usage match: datacenter_name-maria, specify one for each server
Host *-maria
    User <maria user>
    IdentityFile <maria keyfile>
    Port <maria port>
    ProxyCommand ssh $(echo %h | cut -d- -f1) nc $(echo %h | cut -d- -f2) %p"
2
ответ дан 11 June 2020 в 04:22

Теги

Похожие вопросы