Pokoušíme se urychlit instalaci Oracle uzlů pro instalaci RAC. to vyžaduje, abychom si nainstalovali a nakonfigurovali ssh, aby nevyžadoval zadání hesla.
Problém je: Při prvním použití jsme vyzváni
RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes
Existuje způsob, jak tomu zabránit, nebo jsme odsouzeni k ručnímu připojení alespoň jednou na každém serveru z každého serveru ručně?
Aktualizace prosince 2019:
Jak Chris Adams zdůraznil níže, od doby, kdy byla tato odpověď napsána, došlo k poměrně významné změně Openssh za 6,5 let a existuje nová možnost, která je mnohem bezpečnější než původní doporučení níže:
* ssh(1): expand the StrictHostKeyChecking option with two new
settings. The first "accept-new" will automatically accept
hitherto-unseen keys but will refuse connections for changed or
invalid hostkeys. This is a safer subset of the current behaviour
of StrictHostKeyChecking=no. The second setting "off", is a synonym
for the current behaviour of StrictHostKeyChecking=no: accept new
Host keys, and continue connection for hosts with incorrect
hostkeys. A future release will change the meaning of
StrictHostKeyChecking=no to the behaviour of "accept-new". bz#2400
Takže místo nastavení StrictHostKeyChecking no
ve vašem ssh_config
soubor, nastavte StrictHostKeyChecking accept-new
.
Set StrictHostKeyChecking no
ve vašem /etc/ssh/ssh_config
soubor, kde se jedná o globální možnost používanou každým uživatelem na serveru. Nebo jej vložte do svého ~/.ssh/config
soubor, kde bude výchozí pouze pro aktuálního uživatele. Nebo můžete použít na příkazovém řádku:
ssh -o StrictHostKeyChecking=no -l "$user" "$Host"
Zde je vysvětlení, jak to funguje od man ssh_config
(nebo viz tato aktuální verze ):
StrictHostKeyChecking
Pokud je tento příznak nastaven na „ano“, ssh nikdy automaticky nepřidá klíče hostitele k
$HOME/.ssh/known_hosts
soubor a odmítá se připojit k hostitelům, jejichž klíč hostitele se změnil. To poskytuje maximální ochranu před útoky trojských koní, ale může být nepříjemné, když/etc/ssh/ssh_known_hosts
soubor je špatně udržován nebo se často navazuje spojení s novými hostiteli. Tato možnost nutí uživatele ručně přidat všechny nové hostitele. Pokud je tento příznak nastaven na „ne“, ssh automaticky přidá nové klíče hostitele do souborů hostitelů známých uživateli. Pokud je tento příznak nastaven na „zeptat se“, budou nové klíče hostitele přidány do uživatelských souborů hostitele známých až poté, co uživatel potvrdí, že to, co opravdu chtějí, a ssh se odmítne připojit k hostitelům, jejichž klíč hostitele se změnil. Klíče hostitele známých hostitelů budou ve všech případech ověřovány automaticky. Argument musí být „ano“, „ne“ nebo „požádat“. Výchozí hodnota je „ask“.
ssh-keyscan
- Shromažďujte veřejné klíče ssh
Pokud již znáte seznam hostitelů, ke kterým se budete připojovat, můžete pouze vydat:
ssh-keyscan Host1 Host2 Host3 Host4
Můžete dát -H
možnost nechat to hash výsledky jako výchozí ssh
Také můžete dát -t keytype
byly keytype je dsa
, rsa
nebo ecdsa
, pokud dáváte přednost tomu, který typ klíče je třeba chytit místo výchozího .
Jakmile spustíte ssh-keyscan
bude předem vyplněn váš soubor známých hostitelů a nebudete muset ssh žádat o povolení k přidání nového klíče.
Otisk prstu můžete přidat do známých_hostitelů každého serveru. Pro jednoho uživatele:
cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts
Ignorujte HostKeyChecking. K tomu používám např .:
ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null [email protected]
Přidat otisk prstu hostitele/serveru do .ssh/known_hosts
před prvním připojením. Toto je bezpečnější způsob.
Před vyzkoušením proveďte následující úryvek.
mkdir -p ~/.ssh
echo "Host *" > ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
ps: Striktně ne pro produkční servery, pozor na ManInMiddle
Před vyzkoušením proveďte následující úryvek.
mkdir -p ~/.ssh && echo "Host *" > ~/.ssh/config && echo " StrictHostKeyChecking no" >> ~/.ssh/config
ps: Striktně ne pro produkční servery, pozor na ManInMiddle
Líbí se mi Timova odpověď na věci jednorázového typu, ale pokud se jedná o hostitele, ke kterému se chcete pravidelně připojovat, vytvořil bych položku ve vašem ~/.ssh/config (vytvořte ji, pokud soubor neexistuje).
# this example shows wildcard for IP
# you can even use more than one wildcard 10.0.*.* for example
Host 192.168.56.*
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# you can even alias it, which is really useful when scp'ing/rsyncing foo:/path/to/remote
Host foo
HostName foo-long-192-10-135-55.hostname.not-going-to-remember.doh
StrictHostKeyChecking no
UserKnownHostsFile /dev/null