Назад | Перейти на главную страницу

Переменная среды файла конфигурации ssh?

Мне нужно войти на несколько удаленных ssh-серверов во время работы администратора. Я работаю с тремя разными компьютерами на стороне клиента, все они являются системами Debian GNU / Linux. У меня есть каталог рабочей области, куда я помещаю все, что мне нужно для работы, и этот каталог содержит, среди прочего, bashrc файл и ssh_config файл.

Я вручную синхронизирую содержимое этого каталога со скриптом, который использует rsync с одного клиентского компьютера на другой, когда я перехожу и начинаю использовать другого клиента.

Локальному пользователю на каждом из трех клиентов требуется минимальная конфигурация, поэтому, если мне нужно создать нового локального пользователя или переустановить клиент, мне нужно только rsync рабочую область и добавить ссылку на мой пользовательский workspace/bashrc в реальном пользователе $HOME/.bashrc. Мой обычай workspace/bashrc создает несколько псевдонимов, и я получаю свою обычную среду независимо от клиента, который я использую.

Мой обычай workspace/bashrc создает псевдонимы для подключения к удаленным серверам следующим образом:

alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com'

и я вхожу в server1, просто набрав s1 в терминале любого клиента, потому что мой кастомный ssh_config устанавливает необходимые параметры аутентификации с открытым ключом, правильный порт, который прослушивает server1, и правильного пользователя.

Теперь это работает как шарм, пока ssh команда - это то, что мне нужно. К сожалению, как только мне понадобится другая команда, которая, в свою очередь, использует ssh, все становится более хаотичным.

Например. если мне нужно rsync что-либо на один из этих серверов, я вынужден написать всю команду ssh:

rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ...

Аналогичные вещи происходят с другими командами, такими как scp, ssh-copy-id и другие.

Я хотел бы иметь возможность писать

rsync -Pavz --delete -e "ssh" ...

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

Есть ли такая переменная окружения или есть другое решение проблемы?

Это немного неправильное использование всей концепции и искажение инструментов для вашего конкретного случая использования. Лучше использовать инструменты так, как они должны быть. Файлы конфигурации по умолчанию находятся в ~/.ssh/config.

  • Почему бы не создать символическую ссылку оттуда на ваш ~/workspace/etc/ssh_config на всех трех компьютерах, чтобы он работал из коробки без лишних усилий?

  • Начиная с OpenSSH 7.3 вы можете использовать Include директива для достижения того же самого без символических ссылок (так что вы можете также иметь другую конфигурацию на некоторых хостах, если вам нужно).

  • Тот же трюк можно проделать с общесистемной конфигурацией в /etc/ssh/ssh_config.

Как у вас уже есть ... добавить ссылку на мой пользовательский bashrc ... вы можете собрать также модификацию .ssh/config вместе в каком-то сценарии в вашем workspace.