2015-02-02 4 views
2

Мой SSH конфигурации внутри /root/.ssh/config:IdentityFile учтенные в SSH конфигурации

Host * 
    IdentityFile /root/.ssh/id_rsa_api 
    IdentityFile /root/.ssh/id_rsa_ui 

Я использую эти ключи, чтобы иметь возможность клонировать GitHub хранилищу. Однако работает только первый IdentityFile (api). Для второго он говорит Repository not found, когда я начинаю клонировать. Когда я меняю конфигурацию следующим образом:

Host * 
    IdentityFile /root/.ssh/id_rsa_ui 
    IdentityFile /root/.ssh/id_rsa_api 

Таким образом, я могу клонировать интерфейс, но не API. Как следствие, я вижу, что ключи правильные, но второй IdentityFile всегда игнорируется. Есть идеи, в чем проблема?

Я не могу использовать ssh-add, потому что я настраиваю ssh внутри файла Docker, а ssh-agent не запускается при сборке контейнера.

+0

Что делать, если вы просто загружаете оба ключа в ssh-агент ... это вообще изменит поведение? – larsks

+0

@larsks, как бы я сделал это с существующими ключами? –

+0

Я не уверен, что понимаю ваш вопрос ... агент ssh всегда работает с существующими ключами. Вы добавляете их, используя 'ssh-add', при условии, что у вас настроен агент. – larsks

ответ

1

https://developer.github.com/guides/managing-deploy-keys/#deploy-keys

ключи Deploy только предоставить доступ к единому хранилищу. Более сложные проекты могут иметь много репозиториев, чтобы вытащить их на тот же сервер

Итак, я отказался от использования ключей развертывания. Вместо этого я создал ключ ssh, который позволяет получить доступ ко всем моим частным репозиториям. Таким образом, у меня есть один IdentityFile.

1

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

Параметр sshd_configMaxAuthTries определяет, сколько раз клиент может попытаться выполнить аутентификацию. Значение по умолчанию - 6.

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

Смежные вопросы