Snažím se nastavit autentizaci ssh pomocí klíčových souborů namísto uživatelského jména/hesla. Klient je Windows box s PuTTY a server je Ubuntu 12.04 LTS server.
Stáhl jsem puttygen.exe a nechal jej vygenerovat pár klíčů. V /etc/ssh/sshd_config
Mám tento řádek:
AuthorizedKeysFile %h/.ssh/authorized_keys
a v souboru veřejného klíče mého klienta to říká:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "[email protected]"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
[email protected]
---- END SSH2 PUBLIC KEY ----
Zkopíroval jsem část z „ssh-rsa AAA“ do „[email protected]“ a vložil jsem ji do souboru ~/.ssh/authorized_keys
na mém serveru (v mé vlastní domovské složce). V PuTTY v části Připojení> SSH> Auth jsem zadal cestu k soukromému klíči, který vygeneroval na mém klientovi, a uložil nastavení relace.
Restartoval jsem ssh server pomocí
Sudo service ssh restart
Nyní, když načtu profil v PuTTY (ověřil jsem, že soukromý klíč je stále v připojení> SSH> Auth a že cesta je správná) a spustím profil, říká
Server refused our key
Zkusil jsem veřejný klíč vložit do souboru pod adresář ./ssh/authorized_keys/
ale to nepomohlo, takže jsem použil ./ssh/authorized_keys
jako soubor, vložte do něj klíč. Také jsem se pokusil vygenerovat pár soukromých/veřejných klíčů na serveru a veřejný klíč vložit do ./ssh/authorized_files
a načítám soukromou v PuTTY na mém klientovi. Ani restartování serveru nepomohlo.
Zjistil jsem, že chyba může být vyřešena umístěním klíče na místo mimo domovskou složku uživatele, ale to je užitečné pouze v případě, že je domovská složka šifrovaná, což není tato.
Také se pokusil vygenerovat 4096bitový klíč, možná 1024 bylo příliš krátké.
Jak to dokážu? Dík!
OK, /var/log/auth.log
řekl:
sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh
Google mi řekne ~/.ssh/
by mělo být 700 a ~/.ssh/authorized_keys
by mělo být 600, tak jsem to udělal. Nyní /var/log/auth.log
říká:
sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]
Dobře, je to opraveno, ale nechápu, jak se to liší od toho, co jsem už vyzkoušel.
To, co jsem udělal:
~/.ssh/authorized_keys
na jednom řádk (ssh-rsa {your_public_key}
s ne více než jednou mezerou mezi ssh-rsa
a váš klíč)chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown $USER:$USER ~/.ssh -R
/etc/ssh/sshd_config
takže obsahuje AuthorizedKeysFile %h/.ssh/authorized_keys
Sudo service ssh restart
Pro řešení potíží udělejte # tail -f /var/log/auth.log
.
Díky za vaši pomoc!
Právě jsem narazil na tento problém. Přestože je config nastaven správně, jak již bylo uvedeno v tomto vlákně (oprávnění k autorizovaným klíčům atd.), Ukázalo se, že jsem veřejný klíč měl ve špatném formátu. Bylo to ve formě:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----
Což nefungovalo. Ale fungovalo to ve formě:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT [email protected]
problém je v tom, že Windows používají jiný nový řádek než linux, takže při kopírování klíče z Windows do Linuxu existuje \ n na konci řádku, který na linuxu v editoru nevidíte.
Pokud sledujete /var/log/auth.log a pokusíte se přihlásit, chyba je následující:
sshd: error: key_read: uudecode AAAAB3N [....] ==\n
Pokud změníte klíč v systému Windows tak, aby byl v jednom řádku bez nového řádku na konci a zkopírujte jej do linuxu, měl by to fungovat ( trik pro mě).
Musel jsem změnit oprávnění do domovského adresáře
chmod 700 ~
Musel jsem změnit oprávnění k adresáři ~/.ssh ze 770 na 700 a oprávnění k souborům ~/.ssh/autorizované_keys ze 660 na 600.
Z nějakého důvodu odstranění tohoto oprávnění pro mě tento problém vyřešilo.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
The ~/.ssh/authorized_keys
soubor vyžaduje, aby klíče byly všechny na jednom řádku. Pokud jste ji přidali na více řádků jako ve výše uvedené vložce, zkuste se připojit k řádkům.
Tady je to, co pro mě fungovalo:
Po vygenerování klíčů v puttygen
se ujistěte, že zkopírujete a vložíte informace z horního pole a přejdete do svého souboru autorizovaných klíčů. Pokud uložíte veřejný klíč do klientského počítače a poté jej otevřete, text se liší od textu v horní části obrazovky puttygen
. Znovu se ujistěte, že zkopírujete a vložíte text z horní části obrazovky puttygen
(po vytvoření klíčů) do vašeho souboru autorizovaných_keys, který by měl být umístěn v ~/.ssh
.
pro mě problém byl, že jsem vytvořil ~/.ssh/authorized_keys
pomocí root, takže root vlastní. Musel jsem chown sshuser:sshuser ~/.ssh/authorized_keys
pak to začalo fungovat
Také jsem čelil této chybě a vyřešil jsem ji změnou oprávnění autorizovaného souboru_keys na 600
.
chmod 600 ~/.ssh/authorized_keys
Někdy to může být problém spojený s veřejným klíčem na jedné lince, zdá se, že tento přístup jej řeší
echo 'the content of the public key' > /root/.ssh/authorized_keys
Častou chybou je, že lidé používají textový editor (jako Vim) a zkopírují zkopírovaný text před aktivací „vložení“ (před vložením stiskněte + i ve Vimu)
Kromě všech výše uvedených odpovědí nezapomeňte správně zkopírovat a vložit klíč z puttygen
!
Pokud jednoduše kliknete na většinu řetězce klíčů a vyberete jej, nemusíte získat celý řetězec, protože textové pole rozdělí řádky na některé znaky, například +
, takže nevyberete text po +
znak (který nevidíte, protože textové pole je příliš malé). Nezapomeňte vybrat celý řetězec ručně z ssh-rsa
na samý konec textového pole.
k ladění otevřeného ssh lze použít:
Sudo `which sshd` -p 2020 -Dd
spustí sshd na jiném portu 2020. spustí sshd jako aktuální program, takže výstup přejde na obrazovku. pokud je uzavřen, je uzavřen.
zkuste se připojit.
vysvětlení:
https://www.attachmate.com/documentation/rsit-unix-802/rsit-unix-guide/data/sshd_options_ap.htm
Když jsem se přihlásil jako root, vytvářel jsem soubory .ssh a autorizované_keys, což dávalo nesprávná oprávnění. Také umístil všechny soubory do kořenového adresáře. Věřím, že je to kořen mnoha problémů s „serverem odmítnutým klíčem“.
Změna vlastnictví těchto souborů na uživatele, kterého si přejete, nebude osvědčeným postupem, a tak jsem odešel ze svých kroků a ujistil jsem se, že jsem přihlášen jako uživatel, s nímž jsem chtěl použít SSH, a znovu jsem vytvořil .ssh a autorizovaný klíč. Chyba.
Pokyny k připojení serveru Win7 k serveru Xubuntu 15.04: Jak vytvořit klíče SSH bez připojení k VPS pomocí PuTTY
Ve skutečnosti jsem změnil oprávnění authorized_keys
Na 644
A problém byl vyřešen.
chmod 644 ~/.ssh/authorized_keys