Řešení 1:
Ne, neexistuje žádná metoda, jak zadat nebo poskytnout na příkazovém řádku heslo neinteraktivním způsobem pro autentizaci ssh pomocí vestavěného mechanismu openssh. Alespoň ne jeden, o čem vím. Heslo můžete zakódovat do očekávaného skriptu, ale ani to není dobré řešení.
Určitě byste chtěli použít páry klíčů pro autentizaci bez hesla, jak uvedl Michael, nakonec soukromý klíč je do značné míry velké heslo v souboru.
Řešení 2:
Abychom se vyhnuli řetězci komentářů:Ano, toto je nejisté (ani pravděpodobně nejisté). Důrazně bych vám doporučil, abyste to provedli pouze v laboratorní situaci v izolované síti nebo v podobné situaci, která nezahrnuje produkční servery nebo potenciálně produkční server bez úplného resetu/formátu.
Chtěl jsem to nastavit, protože si nemyslím, že můj přepínač 2950 podporuje soukromé/veřejné klíče a doufám, že v určitém okamžiku tyto znalosti získám, ale zatím tam nejsem.
Toho lze dosáhnout pomocí aliasu a sshpass.
- Nainstalujte sshpass
- Změňte soubor .ssh/config soubor obsahovat uživatelské jméno uvedené v otázce
- Přidejte alias do svého terminálu (použil jsem .bashrc a nedoporučoval bych nastavení gloabl)
- Pro přihlášení do cíle použijte alias
Můj příklad alias je:
alias ssc='sshpass -pcisco ssh'
Kde je heslo "cisco". Všimněte si, že mezi -p a heslem není mezera.
Použití je (s odkazem na otázku):
ssc server1
Poznámka:Toto odpovídá na otázku v názvu pouze pro ty, kteří používají vyhledávače. Pokud používáte servery jako v příkladu otázky, měly by být použity páry soukromý/veřejný klíč a nikoli tato odpověď
Řešení 3:
Ano, jak je uvedeno výše, neexistuje způsob, jak jednoduše uložit heslo. Pro autorizaci bych doporučil použít ssh klíč.
nejprve vygenerujte svůj klíč :
ssh-keygen
Poté zkopírujte klíč na své servery/desktopy:
ssh-copy-id -i .ssh/id_rsa.pub [email protected]:
To je vše. Už nikdy nebudete požádáni o heslo.
Doporučuji také obecně odstranit autorizaci heslem, ale to je na vás.
Řešení 4:
Neexistuje způsob, jak to udělat pomocí ssh, je to tak nejisté, jak jen může být.
Jak Danila zmínila, můžete použít očekávat skripty, ale já bych se tím neobtěžoval.
Zajímalo by mě, čeho se snažíte dosáhnout? Chcete přeskakovat z jednoho serveru na druhý? V tomto případě chcete nastavit a používat ssh-agent na vaší pracovní stanici a povolit přesměrování agenta na cílových hostitelích; tímto způsobem bude výměna pověření směrována k vašemu místnímu agentovi, aniž byste museli kopírovat váš soukromý klíč.
Řešení 5:
Používám tento skript z ~/.local/bin
adresář
#!/usr/bin/bash
ORIG_SSH=/usr/bin/ssh
HOST=$1
SSHPASS=$(grep -Pzo "Host $HOST"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
export SSHPASS
sshpass -e $ORIG_SSH [email protected]
else
$ORIG_SSH [email protected]
fi
Což mi umožňuje zadat přístupovou frázi jako #PS <password>
v .ssh/config
soubor.
Ale jak všichni říkají, je lepší použít ssh-keys
s ssh-agent
když je to možné