Відповідь "так" у сценарії bash


24

Я намагаюся зробити git cloneскрипт bash, але перший раз, коли я запускаю скрипт і сервер, поки невідомо, сценарій не працює. У мене є щось подібне:

yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 

Але це ігнорування yes. Чи знаєте ви, як змусити git cloneдодати ключ до відомих хостів?


Про що echo yes | git clone git@github.com:repo/repoo.git?
асфальти

3
@asfallows, @Rafael: echo yesне дуже підхід: другий раз, коли ви запустите команду, ssh не запитає, чи хочете ви продовжувати, оскільки ключ сервера вже буде відомий.
Жил 'SO- перестань бути злим'

Відповіді:


21

Додайте у ~/.ssh/configфайл наступне :

Host github.com
    StrictHostKeyChecking no

Все, що використовує клієнт open-ssh для встановлення віддаленої оболонки (з клієнтом git), має пропустити ключові чеки на github.com.

Це насправді погана ідея, оскільки будь-яка форма пропускання чеків (незалежно від того, чи автоматично ви натискаєте так чи в першу чергу пропускаєте чек) створює чоловікові місце для компромісу середньої безпеки. Кращим способом було б отримати та перевірити відбиток пальця та зберегти його у known_hostsфайлі, перш ніж потрібно запустити якийсь сценарій, який автоматично підключається.


2
Маючи перевагу отримати та перевірити відбиток пальця та зберегти його у known_hostsфайлі раніше .
Жил 'SO- перестань бути злим'

1
Дуже дякую за вашу відповідь, я закінчився, дотримуючись підходу додати відбиток пальця у відомих_хостях. Це як безпечніше :)
Рафаель,

О, я використовую ляльку для цього. Якщо хтось зацікавлений у використанні його ось такий рецепт: gist.github.com/1155725
Рафаель,

5

yesвиходи y. Основні потреби прийняття RSA yes. Ви можете спробувати yes yes | git clone git@github.com:repo/repoo.gitтакі yesвиходи yesзамість y.


5
Чомусь для мене це не спрацювало з клоном Git.
Метт В.

Ні для мене це не працювало. Також echo "yes" | ...не робить. Я думаю git, не приймає трубопроводи. Може, лише в якійсь версії?
Удандан

3

Запуск ssh-keyscan -H github.com >> ~/.ssh/known_hostsперед клонуванням додасть ключ і запобіжить появі підказки.

Звичайно, такий підхід також є вразливим до нападу MITM.


1

Я раніше стикався з цим питанням. Хоча це було на машині Windows, але нам потрібно було використовувати ssh для підключення до віддаленого хоста. Ми зіткнулися з тією ж проблемою, що перше підключення завжди не вдалося, оскільки воно не розпізнавало ключі.

Я вирішив це, підключивши вручну і знайшов ключ реєстру та імпортував його на початку сценарію. В Linux має бути та сама загальна ідея: ви хочете додати цей сервер до списку надійних хостів, щоб ssh не запитував вас, чи довіряєте ви йому кожного разу.

Після підключення вручну знайдіть файл ключа і додайте його до відомого файлу_hosts. Таким чином ssh перегляне цей файл, припустимо, що ви знаєте, що ви робите, і продовжуйте, не запитуючи вас про відбиток пальця.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.