ssh-keygen -R $HOSTNAME
может удалить ключ (ключи) хоста ssh из своего known_hosts
. Могу ли я добавить конкретный ключ хоста (для имени хоста / ip) в known_hosts
идемпотентным образом?
Я хочу встроить ssh'ing в сервер. Это может быть запущено кем-то, кто раньше не подключался к этому серверу по ssh, и, следовательно, ключ хоста сервера не будет в known_hosts
файл, поэтому им будет предложено принять его. Я бы хотел убрать этот шаг, чтобы все было налажено. Как я могу это сделать?
ssh -o StrictHostKeyChecking=no …
отключил эту безопасность, у которой есть свои недостатки. ssh-keyscan $HOSTNAME > ~/.ssh/known_hosts
будет работать, но known_hosts
файл будет постоянно расти и обновит файл с ток ключ хоста. Есть ли способ сделать это идемпотентнодля фиксированного, определенного сочетания имени сервера и ключа хоста? т.е. «Если у вас нет $ HOST_KEY для $ HOSTNAME, добавьте его в свой known_hosts
»?
Этот сценарий будет работать в Ubuntu 18.04 с клиентом OpenSSH v7.6.
Ты можешь использовать ssh-keygen
чтобы проверить, есть ли known_hosts
файл содержит записи для определенного хоста, например:
lacek@Teloth:~$ ssh-keygen -f ~/.ssh/known_hosts -F 192.168.153.254
# Host 192.168.153.254 found: line 18
192.168.153.254 ssh-rsa AAAAB3Nza.....
Вы можете использовать это, чтобы проверить наличие ключа хоста и добавить его, если он не найден, примерно так:
#!/bin/bash
HOSTNAME=host.to.ssh.into
KNOWNHOSTS=~/.ssh/known_hosts
ssh-keygen -F $HOSTNAME -f $KNOWNHOSTS | grep -q found || ssh-keyscan $HOSTNAME >>$KNOWNHOSTS 2>/dev/null