Назад | Перейти на главную страницу

Как лучше всего добавлять известные ключи / отпечатки пальцев в known_hosts

Есть много ответов на вопросы, подобные этому, но я не могу найти ни одного с четким ответом. Все они либо получают открытый ключ хотя бы один раз, либо полностью игнорируют ключ, либо записывают непосредственно в файл 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 довольно новый. Если это не сработает, вам нужно будет определить, следует ли хешировать известные хосты другим способом (или делать это независимо от условий).

Хеширование файла с уже хешированными хостами не затрагивает эти строки.

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