it-swarm.dev

Po zkopírování veřejného klíče SSH na autorizované_keys server nadále vyžaduje heslo

Mám server Ubuntu spuštěný v cloudu. Vytvořil jsem uživatele (git). Ve složce /home/git, Vytvořil jsem .ssh/ dir a authorized_keys soubor.

Ale když vložím svůj veřejný klíč SSH do authorized_keys, server se mě stále ptá na heslo.

Co jsem udělal špatně?

47
Luis Dalmolin

Na straně serveru bude démon ssh protokolovat chyby v /var/log/auth.log, Takže v tomto souboru zkontrolujte, co se hlásí.

Ze strany klienta můžete při navazování spojení přidat příznak -v (Nebo -vv Nebo -vvv), Abyste zvýšili výřečnost. Možná budete takto schopni identifikovat svůj problém.

Zde jsou další věci ke kontrole.

  • Ujistěte se, že /home/git/.ssh/authorized_keys Je vlastníkem git.
  • Ujistěte se, že /home/git/.ssh/authorized_keys Má režim 600 (-rw-------).

Zkontrolujte také soubor /etc/ssh/sshd_config.

  • PubkeyAuthentication by mělo být nastaveno na yes
  • Existuje také direktiva AuthorizedKeysFile, která určuje cestu, kam mají být autorizované klíče umístěny. Ujistěte se, že je přidán komentář nebo výchozí hodnota %h/.ssh/authorized_keys.
45
xeyes

Také se ujistěte, že je váš domovský adresář uživatele (ve vašem případě/home/git) zapisovatelný pouze vy. Tento problém jsem měl jednou, protože můj domovský adresář byl zapisovatelný ve skupině. /var/log/auth.log v něm řekl: „Ověření odmítnuto: špatné vlastnictví nebo režimy pro adresář/home/chuck“. (Tím je zajištěno, že nepoužívá soubor autorizovaný_keys, se kterým si někdo jiný než vy s vámi pohrává!)

19
centipedefarmer

Existují různé způsoby, jak to vyřešit: můžete nakonfigurovat buď sshd (na straně serveru) nebo ssh (na straně klienta) tak, aby nepoužívali ověřování heslem. Zakázáním ověřování heslem na serveru je váš server bezpečnější, ale pokud ztratíte klíč, budete mít potíže.

Chcete-li provést ssh (na straně klienta) pomocí autentizace pubkey, přidejte do příkazu ssh některé možnosti:

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X [email protected]

Pokud to funguje, můžete nastavit PasswordAuthentication=no možnost trvale v konfiguračním souboru klienta ssh /etc/ssh/ssh_config celého systému nebo ~/.ssh/config specifické pro uživatele (podrobnosti viz man ssh_config).

5
tohuwawohu

Používáte na místním počítači ~/.ssh/config? K tomuto problému jsem narazil, když v konfiguračním souboru používám direktivu IdentityFile a odkazuji na veřejný klíč. Například:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect
3
user1576

Pokud je vaše domovská složka šifrována, pak váš authorized_keys soubor nelze před přihlášením přečíst. Musíte ji přesunout mimo svůj domov.

Zde je vysvětleno a jak to provést: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Trou Troubleshooting

2
Fab V.

Na vzdáleném serveru - userauth_pubkey jsem viděl následující zprávu protokolu z /var/log/auth.log: typ klíče ssh-rsa není v PubkeyAcceptedKeyTypes

To říká, že klíč typu ssh-rsa v mém místním systému není serverem akceptován. Změnila se konfigurace serveru změnou a připojením hodnoty ssh-rsa k atributu/vlastnosti PubkeyAcceptedKeyTypes v souboru/etc/ssh/sshd_config na mém serveru a restartováním sshd démona

To problém vyřešilo

1
trailNerror

Další věcí, kterou je třeba zkontrolovat, je, zda ve vašem veřejném klíči existují další vrácení vozíku. Sledoval jsem výše uvedenou radu, abych zkontroloval /var/log/auth.log a při čtení klíče jsem viděl chybu. Klíč byl přibližně dva řádky místo čtyř. Do klíče byly vloženy další vrácení vozíku.

Při použití editoru vi použijte shift-j, abyste se připojili k řádkům a vymazali mezeru v řetězci klíčů.

1
Victor

Pokud máte více privátních klíčů, pomocí přepínače -v na příkazu ssh ssh zkontrolujte, zda se vaše primární primární klíče pokoušejí připojit. Pokud tomu tak není, řekněte ssh klientovi, aby je použil s následujícím příkazem:

ssh-add path/to/private/key
1
Max

Klíč můžete také přidat agentovi SSH:

[email protected]:~$ ssh-agent bash
[email protected]:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)
1
TTT

Co se mi stalo, je, že mám 2 virtuální počítače pro přístup z mého místního počítače (2 klíče id_rsa.pub a id_rsa2.pub). Uvědomil jsem si, že moje ssh připojení standardně používá id_rsa.pub pro jakékoli ssh [email protected] připojení. Svůj problém jsem vyřešil přidáním konfiguračního souboru a určil totožnost, která se má použít pro každého hostitele, jako například:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
0
Aymen Alsaadi

Může to být také tím, že voláte

Sudo git clone [email protected]:repo.git

kde klíč uživatele root ssh nebyl přidán do authorized_keys z gituser

0
Stevie G

Měl jsem správná oprávnění k souborům .ssh/adresář a autorizovaná_keys, ale setkal jsem se s tímto problémem „Výzva k zadání hesla“ kvůli jinému problému způsobenému vlastními silami.

Použil jsem zvýraznění a kopírování/vložení pomocí myši pro zkopírování informací z mého místního id_rsa.pub do souboru autorizovaných_keys na serveru. To úspěšně zkopírovalo data do jednoho řádku, ale tam, kde byly nežádoucí mezery na konci viditelných řádků, které byly při úpravě souboru pomocí vi viditelné. Jakmile jsem tyto nežádoucí prostory odstranil, mohl jsem se vrhnout do pořádku.

0
Keith

Na počítači se systémem Ubuntu 18.04.02 LTS návrh na nastavení oprávnění ~/.ssh až 600 pro mě nefungovalo. Musel jsem nastavit oprávnění na 700 a pak všechno fungovalo dobře.

0
azaghal