Есть много ответов на вопросы, подобные этому, но я не могу найти ни одного с четким ответом. Все они либо получают открытый ключ хотя бы один раз, либо полностью игнорируют ключ, либо записывают непосредственно в файл known_hosts (подразумевает отсутствие хэша)
У меня есть отпечаток и / или открытый ключ сервера. Я бы хотел, чтобы команда оболочки добавила его в клиентский known_hosts
файл. Это должно использовать все, что настроено (хеш / без хеша)
Кроме того, сценарий выполнит git pull с этого сервера, поэтому я не знаю, актуально ли предоставление информации о порте на данном этапе или нет. Скажите, пожалуйста, если это так.
Спасибо. И не стесняйтесь указывать мне правильное направление, если на этот вопрос уже был дан ответ, а я как-то его пропустил.
PS - Дополнительная информация: одна из причин, по которой я спрашиваю о портах, заключается в том, что я безуспешно выполнил следующие действия (я знаю, что это получение ключа от хоста, чего я бы предпочел не делать):
ssh-keygen -R my.awesome.host # hostname
ssh-keygen -R 1.2.3.4 # IP
ssh-keygen -R my.awesome.host,1.2.3.4
ssh-keyscan -H my.awesome.host,1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H 1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H my.awesome.host >> ~/.ssh/known_hosts
Но когда я git clone (через ssh), я слышу громкий:
The authenticity of host '[my.awesome.host]:7999 ([1.2.3.4]:7999)' can't be established.
RSA key fingerprint is fi:ger:pr:in:ti:nf:or:ma:ti:on
Are you sure you want to continue connecting (yes/no)?
Все же ssh user@my.awesome.host
не подсказывает мне об отпечатке пальца.
Имея открытый ключ, вы можете просто записать его в known_hosts
файл и, возможно, повторный хеш, если вам нужно:
HOSTNAME=my.awesome.host
PORT=7999
PUBKEY="ssh-rsa AAAAB3NzaC1yc2EAAAAD...E"
KNOWN_HOSTS="~/.ssh/known_hosts"
echo "[$HOSTNAME]:$PORT $PUBKEY" >> $KNOWN_HOSTS
# re-hash, if needed:
ssh -G -p $PORT $HOSTNAME | grep "hashknownhosts yes" && \
ssh-keygen -H -f $KNOWN_HOSTS
В -G
переключиться на ssh
довольно новый. Если это не сработает, вам нужно будет определить, следует ли хешировать известные хосты другим способом (или делать это независимо от условий).
Хеширование файла с уже хешированными хостами не затрагивает эти строки.
Я не пробовал приведенный выше сценарий, но вы сможете понять суть этого (и исправить опечатки, если они есть).