ssh: automatikusan fogadja a kulcsokat

172

Ezt a kis segédprogramot írom:

for h in $SERVER_LIST; do ssh $h "uptime"; done

Ha egy új kiszolgálót hozzáad a$SERVER_LIST -hoz, akkor a szkript leáll:

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

Megpróbáltamyes:

for h in $SERVER_LIST; do yes | ssh $h "uptime"; done

szerencsével.

Van-e mód assh paraméterezésére, hogy automatikusan elfogadja az új kulcsot?

    
készlet Adam Matan 18.04.2012 11:11
forrás

4 válasz

187

Használja a StrictHostKeyChecking opciót, például:

ssh -oStrictHostKeyChecking=no $h uptime

Ez az opció hozzáadható a ~ / .ssh / config fájlhoz, például:

Host somehost
    Hostname 10.0.0.1
    StrictHostKeyChecking no

Vegye figyelembe, hogy ha a gazda kulcsok megváltoztak, figyelmeztetést kap erről a lehetőségről:

$ ssh -oStrictHostKeyChecking=no somehost uptime
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
31:6f:2a:d5:76:c3:1e:74:f7:73:2f:96:16:12:e0:d8.
Please contact your system administrator.
Add correct host key in /home/peter/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/peter/.ssh/known_hosts:24
  remove with: ssh-keygen -f "/home/peter/.ssh/known_hosts" -R 10.0.0.1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
ash: uptime: not found

Ha a gazdagépeket gyakran nem újratelepítik, akkor a-oUserKnownHostsFile=/dev/null opcióval kevésbé biztonságos (de sokkal kényelmesebb a gyakran változó gazda kulcsokhoz). Ez az összes befogadott gazda kulcsot eldobja, így soha nem fogja generálni a figyelmeztetést.

18.04-kor új lehetőség van:StrictHostKeyChecking=accept-new. man 5 ssh_config :

If this flag is set to “accept-new” then ssh will automatically
add new host keys to the user known hosts files, but will not
permit connections to hosts with changed host keys.  If this flag
is set to “no” or “off”, ssh will automatically add new host keys
to the user known hosts files and allow connections to hosts with
changed hostkeys to proceed, subject to some restrictions.
    
válasz adott Lekensteyn 18.04.2012 11:29
forrás
97

A következő parancs segítségével hozzáadhatja az ujjlenyomatot egy kiszolgálóhoz a known_hosts-hoz

ssh-keyscan -H <ip-address> >> ~/.ssh/known_hosts
ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

MEGJEGYZÉS: IP-cím > és < hostname > a hozzáadni kívánt kiszolgáló IP és DNS nevével.

Az egyetlen probléma ezzel az, hogy két szervered lesz a known_hosts-ban kétszer. Ez nem igazán nagy ügy, csak említésre méltó. Annak biztosítása érdekében, hogy nincsenek másolatok, először eltávolíthatja az összes kiszolgálót a következők futtatásával:

ssh-keygen -R <ip-address>
ssh-keygen -R <hostname>

Szóval futhatsz:

for h in $SERVER_LIST; do
    ip=$(dig +search +short $h)
    ssh-keygen -R $h
    ssh-keygen -R $ip
    ssh-keyscan -H $ip >> ~/.ssh/known_hosts
    ssh-keyscan -H $h >> ~/.ssh/known_hosts
done

Az egyik dolog, amit szem előtt kell tartanunk, amikor eltávolítjuk a csak újratöltést, lényegében eltávolítjuk az ujjlenyomat ellenőrzésének biztonságát. Tehát biztosan nem szeretné futtatni ezt a szkriptet a segédprogram szkriptjének végrehajtása előtt.

    
válasz adott mhost 17.10.2013 02:24
forrás
23

Később késő vagyok ezzel a válaszral, de az ésszerű módja az ssh-keycan az új gépen, mielőtt elindítaná a rendelkezésre állást.

ssh-keyscan  <newhost> >> ~/.ssh/known_hosts

A józansági ellenőrzés letiltása a kedvesség kedvéért úgy hangzik, mint egy rossz terv, még akkor is, ha úgy gondolja, hogy teljesen a környezet irányítása alatt áll.

    
válasz adott tink 24.11.2014 20:47
forrás
0

A kiszolgálók listájának automatikus hozzáadásához a következőket tehetjük meg:

Szerverek IP-címe a fájlkiszolgálók listájába

Az IP-ket az alábbi formátumban kell hozzáadni.

cat servers-list

kimenet
123.1.2.3
124.1.2.4
123.1.2.5

A fent említett IP-címek módosítása helyett az Önét.

A parancs alatt minden kiszolgáló hozzáadódik a listából.

ssh-keyscan -p61 -H "'cat servers-list'" >> ~/.ssh/known_hosts
    
válasz adott Waqas Khan 16.02.2018 08:46
forrás