Мне нужно войти на несколько удаленных 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
.