Я создаю сценарий bash, чтобы подготовить новый сервер, на котором я могу развернуть веб-приложение. Одна вещь, которую я всегда должен делать, - это использовать GitHub в качестве известного хоста, используя ssh git@github.com
. Как я могу автоматизировать этот процесс в сценарии bash и сделать это идемпотентным способом?
Самый простой способ - сделать что-то вроде этого.
ssh-keyscan remote_server >>~/.ssh/known_hosts
Если это новое поле, вам также может потребоваться создать ~/.ssh
каталог перед запуском ssh-keyscan.
Имейте в виду, что ssh-keyscan может принимать произвольное количество имен хостов. Он получит все ключи, какие сможет.
Вы пытаетесь автоматизировать прием нового ключа? Если это так, вы можете использовать -oStrictHostKeyChecking = no.
Это очень плохая идея, поскольку теперь вы полностью открыты для атак типа «злоумышленник посередине».
Лучшим вариантом было бы просто управлять файлом known_hosts и повторно использовать этот файл при настройке новых серверов. Прикрепите его к github и напишите простой скрипт для загрузки этого файла перед загрузкой в github.
Строгая проверка ключа хоста - это хорошо.
Я не уверен, что понимаю вопрос, но я думаю, что вы хотите игнорировать приглашение known_host или полностью избегать его, и в этом случае:
ssh -o StrictHostKeyChecking = нет
или другие предложения по адресу: http://www.joedog.org/2012/07/ssh-disable-known_hosts-prompt/