SSH: znany host z adresem dynamicznym

12

Muszę połączyć się z hostem z dynamicznym adresem IP.

Za każdym razem, gdy zmienia się jego adres IP, SSH monituje mnie o sprawdzenie poprawności odcisków palców:

The authenticity of host '...' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)?

Czy można przekazać SSH klucz publiczny hosta, aby:

  1. SSH automatycznie sprawdza autentyczność hosta
  2. Klucz hosta nie jest przechowywany w pliku znanego_hosta

To pytanie różni się od tego, jak mogę uniknąć weryfikacji hosta SSH dla znanych hostów? Od tamtego innych pytań ma na celu walidacji tłumić SSH, a ja nie chcę, żeby go powstrzymać: Ja nie chce mieć gospodarz uwierzytelniony, tylko za pomocą klucza publicznego hosta (które znam, i to zapisane w pliku) zamiast SSH known_hostsplik.

Wydaje mi się, że inne pytanie dotyczy łączenia się z innym serwerem za każdym razem, zamiast łączenia się z jednym dobrze znanym serwerem z dynamicznym adresem IP.

peoro
źródło

Odpowiedzi:

8

Najlepszym rozwiązaniem (tj. Najbliższym temu, co chcę), jakie mogę znaleźć, jest skorzystanie z opcji HostKeyAlias: użyje nazwy hosta, którą określam, aby uzyskać do niej dostęp known_hosts(zamiast adresu IP, z którym się łączę).

Będę musiał dodać klucz publiczny hosta do known_hostskorzystania z danej nazwy hosta (np .:), myhosta następnie połączyć się z nim za pomocą:

ssh -o 'HostKeyAlias myhost' ...
peoro
źródło
Wiem, że minęło trochę czasu, ale: jeśli to najlepiej odpowiada na twoje pytanie, zaakceptuj je.
kittykittybangbang
Uwaga dla innych: możesz dodać HostKeyAliaswartość konfiguracyjną do ~/.ssh/configpliku, a nawet do /etc/ssh/ssh_configpliku globalnego .
kael
6

known_hostsPlik jest nie tylko kluczem, to zawiera również nazwę hosta używaną do łączenia, a jeśli to możliwe, IP, który odpowiada. Dlatego widzisz błąd, porównuje on triplet, który dostaje z serwera, z tym, co zapisałeś w pliku znane_hosty.

Jeśli więc adres IP ciągle się zmienia, możesz go wyłączyć, CheckHostIPco oznacza, że ​​po prostu sprawdzi nazwę hosta i klucz hosta. Jeśli pozostaną one niezmienione, powinieneś mieć mniej skarg, ale będziesz narażony na ryzyko, jeśli ktoś przejmie twój DNS.

NickW
źródło
1
Dzięki za odpowiedź, przetestuję ją jak najszybciej! Dlaczego w ogóle miałby być tak ostry? Jeśli znam klucz publiczny SSH hosta, to powinno wystarczyć, aby w każdym razie być całkowicie bezpiecznym (chyba że komuś uda się ukraść klucz prywatny tego hosta), prawda?
peoro
I nadal nie lubię tego, jeśli muszę być szczera. Używając tej flagi SSH będzie nadal uzyskiwać dostęp known_hosts. Dlaczego? Czy nie mogę powiedzieć „ssh połącz się z X, którego kluczem publicznym jest Y”? Dlaczego nie? Czy nie byłoby to w 100% pewne?
peoro
Chodzi o to, że klucz hosta jest częścią większej całości, a samo to nie wystarcza, aby upewnić się, że serwer, z którym się łączysz, jest nadal tym, z którym wcześniej się łączyłeś. Musisz upewnić się, że wpisy IP i DNS są również zgodne. Pamiętaj, że jest to powłoka oparta na sieci, więc sieć również musi zostać sprawdzona.
NickW