ssh: automaticky akceptuje klíče

172

Napsal jsem tento malý skript utility:

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

Při přidání nového serveru do$SERVER_LIST je skript zastaven:

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)?

Snažil jsem seyes:

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

bez štěstí.

Existuje způsob, jak parametrizovatssh, aby automaticky přijal jakýkoli nový klíč?

    
dané Adam Matan 18.04.2012 11:11

4 odpovědi

187

Použijte možnost StrictHostKeyChecking, například:

ssh -oStrictHostKeyChecking=no $h uptime

Tuto volbu lze také přidat do souboru ~ / .ssh / config, např .:

Host somehost
    Hostname 10.0.0.1
    StrictHostKeyChecking no

Všimněte si, že po změně klíčů hostitele dostanete varování, a to i při této možnosti:

$ 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

Pokud hostitelé nejsou často přeinstalováni, můžete s touto volbou-oUserKnownHostsFile=/dev/null udělat méně bezpečný (ale vhodnější pro často se měnící klávesy hostitele). Tím se vyřadí všechny přijaté klávesy hostitele, takže to nikdy nevytvoří.

S 18.04 je nová možnost:StrictHostKeyChecking=accept-new. Z 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.
    
odpověděl Lekensteyn 18.04.2012 11:29
97

Pro přidání otisků prstů pro server do vašeho know_hosts

můžete použít následující příkaz
ssh-keyscan -H <ip-address> >> ~/.ssh/known_hosts
ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

POZNÁMKA: Nahradit < ip-address > a < název hostitele > s IP a DNS názvem serveru, který chcete přidat.

Jediným problémem je to, že skončíte dvakrát s některými servery ve svém know_hosts. Není to opravdu velký problém, jenom zmínka. Chcete-li se ujistit, že neexistují žádné duplikáty, můžete nejprve odstranit všechny servery spuštěním následujícího:

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

Takže můžete spustit:

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

Jedna věc, kterou je třeba pamatovat při odstraňování pouze k opětovnému přidání, je, že v podstatě odstraníte bezpečnost ověření otisků prstů. Takže byste rozhodně nechtěli spustit tento skript před každým provedením skriptu.

    
odpověděl mhost 17.10.2013 02:24
23

Jsem trochu pozdě s touto odpovědí, ale smysluplným způsobem by bylo udělat ssh-keyscan na novém počítači předtím, než spustíte shromažďování uptime.

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

Zablokování kontroly zdravého rozumu kvůli pohodlí se zdá být špatným plánem, i když si myslíte, že máte naprostou kontrolu nad prostředím.

    
odpověděl tink 24.11.2014 20:47
0

Abychom automaticky přidali seznam serverů, můžeme postupovat níže:

Přidat servery IP v seznamu souborových serverů

Adresy IP by měly být přidány ve formátu níže.

Výstupcat servers-list

123.1.2.3
124.1.2.4
123.1.2.5

Změňte IP adresy tím, že nahradíte vaše.

Níže uvedený příkaz přidá všechny servery ze seznamu.

ssh-keyscan -p61 -H "'cat servers-list'" >> ~/.ssh/known_hosts
    
odpověděl Waqas Khan 16.02.2018 08:46