Я хочу использовать один и тот же ключ SSH для доступа к нескольким серверам Ubuntu. Причина в том, что я хочу развернуть наше приложение в средах DEV, STAGING, PROD, LOCAL через CI-сервер. В этих средах мы используем серверы Ubuntu. Технический руководитель попросил меня создать один ключ и использовать его для всех серверов, чтобы упростить непрерывную интеграцию.
Мы используем Teamcity для CI, а сервер Teamcity и его агенты работают на одном сервере Windows.
Я создал пары ключей id_rsa и id_rsa.pub на одном сервере (ЛОКАЛЬНЫЙ сервер).
Следующим шагом является копирование id_rsa.pub на все остальные серверы и загрузка файла id_rsa на сервер Teamcity.
Я предполагаю, что, поскольку теперь на сервере Teamcity есть ключ id_rsa, он должен иметь возможность подключаться к серверам Ubuntu по ssh и выдавать команды через SSH Exec (плагин Deployer).
Может ли кто-нибудь сказать мне с ключевой точки зрения SSH, что я сделал и что до сих пор считал правильным? Удаленные серверы - это Ubuntu, а клиент (сервер Teamcity) - это сервер Windows.
Как я уже описал выше, я попытался подключиться к серверу, на котором сгенерировал ключи с городского сервера. В этом случае я загрузил id_rsa на сервер teamcity и попытался подключиться. Я указал следующий путь к файлу id_rsa. Я подтвердил, что файл действительно находился в следующем месте:
E:\BuildServerConfig\config\projects\MyProject\pluginData\ssh_keys
где E:\BuildServerConfig
это каталог данных.
Но я получил следующую ошибку
com.jcraft.jsch.JSchException: java.io.FileNotFoundException: E: \ BuildServerConfig \ config \ projects \ MyProject \ pluginData \ ssh_keys (система не может найти указанный путь)
Я знаю, что путь необязательный, когда я удалил путь, он дал следующую ошибку
Неожиданная ошибка: java.lang.IllegalArgumentException: аргумент для параметра @NotNull "путь" в jetbrains / buildServer / util / FileUtil.resolvePath не должен быть нулевым.
Могли бы некоторые просветить меня по этому поводу?
Я ничего не знаю о Teamcity и полагаюсь на ответ Catbird55 относительно сервера. Однако на стороне Ubuntu недостаточно просто скопировать файл id_rsa.pub на удаленные серверы. Вам необходимо определить идентификатор пользователя, который Teamcity будет использовать для подключения к серверам, а затем добавить содержимое id_rsa.pub в authorized_keys для этого пользователя:
cat /path/to/id_rsa.pub >> ~teamcityuser/.ssh/authorized_keys
И, возможно, установите некоторые разрешения, если authorized_keys еще не существует:
chown teamcityuser ~teamcityuser/.ssh/authorized_keys
chmod 600 ~teamcityuser/.ssh/authorized_keys
Может ли кто-нибудь сказать мне с ключевой точки зрения SSH, что я сделал и что до сих пор считал правильным?
Думаю, есть проблема.
Вы говорите, что путь не обязателен. Приложение Java ожидает, что файл будет здесь:
E: \ BuildServerConfig \ config \ projects \ MyProject \ pluginData \ ssh_keys
Но читатели этого поста не знают, существует ли там копия. Вы говорите, что поместили файл сюда:
E: \ BuildServerConfig \ config \ projects \ MyProject \ pluginData \ ssh_keys
Я бы сделал одно из двух:
1) Можно ли изменить код для поиска «pluginData подпапки MyProject вместо pluginData BeyondBank?» Если нет, используйте второй вариант: 2) Можно ли поместить файл ssh_keys в подпапку MyProject pluginData?