Неинтерактивный git-клон (ssh отсканированный отпечаток пальца) [дубликат]

    

У этого вопроса уже есть ответ:

    

Я хочу клонировать репо неинтерактивным способом. При клонировании git просит подтвердить отпечаток хозяина:

The authenticity of host 'bitbucket.org (207.223.240.182)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? no

Как я могу заставить «да» каждый раз, когда появятся эти вопросы? Я пробовал использовать yes yes | git clone ..., но он не работает.

EDIT: Вот решение: Могу ли я автоматически добавить новый хост для known_hosts? (добавляет to known_hosts с ssh-keyscan).

101 голос | спросил qwe 9 52012vEurope/Moscow11bEurope/MoscowFri, 09 Nov 2012 13:04:56 +0400 2012, 13:04:56

6 ответов


83

Я не думаю, что это лучшее решение, но это решение для меня.

Ответ:

Добавление доменных имен в файл known_hosts с помощью команды ssh-keyscan разрешило проблему:

ssh-keyscan <enter_domainname_e.g._github.com> >> ~/.ssh/known_hosts

ответил kroe 2 72014vEurope/Moscow11bEurope/MoscowSun, 02 Nov 2014 07:13:38 +0300 2014, 07:13:38
74

Ни один из ответов не защищен. У вас есть 2 варианта:

Используйте протокол https вместо git

Он не будет запрашивать отпечатки пальцев, потому что ssh не задействован, вместо этого используется https (duh). Если вы используете минималистское изображение или Docker, вам может потребоваться установить пакет ca-сертификатов.

Если вам действительно нужен протокол git + ssh

Вам действительно нужно добавить ключ во время выполнения? Это абсолютно не безопасно.

Перед запуском скрипта получите ключ от github (на вашем локальном компьютере):

ssh-keyscan github.com >> githubKey

Создайте отпечаток:

ssh-keygen -lf githubKey

И проверьте его вручную по сравнению с указанными на этой странице (хорошо, вы доверяете сертификатам https и OpenSSL, чтобы принести вам оригинальный веб-сайт github, но все равно намного лучше, чем слепо принимать открытый ключ).

Затем вы укажете его в своем скрипте, добавив в него:

echo '<copy paste the content of 'cat githubKey' on your machine>'  >> ~/.ssh/known_hosts

перед клоном git.

Открытый ключ GitHub будет изменяться только в том случае, если он считает, что он был скомпрометирован (или недостаточно безопасен). Если это когда-либо, вы хотите , чтобы ваш скрипт терпел неудачу.

ответил autra 25 J0000006Europe/Moscow 2015, 18:39:37
7

Я считаю, что лучшим вариантом здесь является резервное копирование и очистка вашего файла ~/.ssh/known_hosts, ручное выполнение SSH-соединения, проверка IP-адреса и отпечатка пальца, mv ~/.ssh/known_hosts ~/bitbucket_hosts, затем используйте в своем скрипте содержимое ~/bitbucket_hosts, чтобы автоматически добавлять известные отпечатки пальцев в файл known_hosts (не забудьте восстановить оригинал ~ /.ssh /known_hosts).

Этот шаг нужно выполнить только один раз (на любой машине, я полагаю), и как только у вас есть отпечатки пальцев, вы можете включить его в свой сценарий автоматизации.

ответил Steven Soroka 7 PMpMon, 07 Apr 2014 22:53:59 +040053Monday 2014, 22:53:59
6

Хотя я, конечно, понимаю, что вы хотите автоматизировать такой процесс, сделать это было бы неразумным. Причина, по которой SSH и связанные с ней сетевые подкомпоненты перекрываются при использовании защищенного протокола, - это ПРЕДУПРЕЖДЕНИЕ человека, что открытый ключ системы неизвестен. Это преднамеренно - пользователю необходимо явно информировать систему о ожидаемом хосте. Вы не хотели бы автоматически принимать каждый открытый ключ, предоставленный вам, или часть безопасности в SSH или TLS /SSL может быть скомпрометирована. Одним из примеров является атака «человек в середине», например, когда прокси-программное обеспечение представляет собственный ключ в месте ожидаемого хоста.

Соблюдайте осторожность.

Если вы не боитесь источника кода через провод, вы должны явно и исключительно использовать git: //protocol при клонировании - он без аутентификации и в ясном тексте.

ответил Jeff Stice-Hall 23 Jam1000000amWed, 23 Jan 2013 02:34:50 +040013 2013, 02:34:50
5

Как сказал Джефф-Холл, делать это опасно, так как он позволяет атаковать невидимых людей в середине. Однако вы можете использовать параметр StrictHostKeyChecking no в ssh, чтобы отключить проверку ключей хоста. Однако, если бы я был вами, я был бы очень осторожен с этим вариантом.

ответил Wren T. 3 FebruaryEurope/MoscowbSun, 03 Feb 2013 11:45:31 +0400000000amSun, 03 Feb 2013 11:45:31 +040013 2013, 11:45:31
3

Добавление ключа к .ssh/known_hosts представляется правильным.

Хотя при автоматизации задачи вы хотите убедиться, что ключ еще не содержится и не добавлен в каждый clone /pull.

Этот фрагмент добавит отпечаток пальца, если он еще не найден:

if [ ! -n "$(grep "^bitbucket.org " ~/.ssh/known_hosts)" ]; then ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts 2>/dev/null; fi
ответил udondan 16 FebruaryEurope/MoscowbMon, 16 Feb 2015 13:42:03 +0300000000pmMon, 16 Feb 2015 13:42:03 +030015 2015, 13:42:03

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132