it-swarm.dev

Je třeba ssh klíč pojmenovat id_rsa?

S tímto problémem jsem se setkal několikrát při vytváření sestavovacích serverů s klíčovým ověřením.

Přemýšlel jsem, jestli to má někdo jiný. Mám pro svého současného uživatele několik klíčů, které se mohou připojit k různým strojům. Řekněme machine1 a machine2. Vložil jsem svůj veřejný klíč do svého příslušného souboru autorizovaných klíčů. První, který jsem pojmenoval první klíč id_rsa a druhý klíč ohýbačka.

Když se pokusím připojit k ohýbačce, dostanu následující výstup s mým podrobným ssh připojením

debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/bozo/.ssh/.ssh/identity
debug1: Trying private key: /home/bozo/.ssh/.ssh/id_rsa
debug1: Trying private key: /home/bozo/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Nabízí pouze klíč id_rsa, jak můžete vidět výše. Je to správně? Pokud ano, proč? Jak získám nabídku dalších klíčů? Vím, že je to problém, který vidím občas, protože doma mám více klíčů bez větších potíží.

Ocenil bych také přehled o tom, jak hospoda a soukromé klíče interagují s klientem a serverem. Myslel jsem, že mám docela slušný nápad, ale zřejmě mi něco chybí.

Prosím a děkuji.

135
myusuf3

Ve výchozím nastavení ssh hledá id_dsa a id_rsa soubory. Klíče nemusí být takto pojmenovány, můžete je také pojmenovat mykey, nebo je dokonce umístit do jiného adresáře. Pokud však uděláte některý z nich, musíte explicitně odkazovat na klíč v příkazu ssh takto:

ssh [email protected] -i /path/to/mykey

Pokud příkaz nepřijme -i, např. sshfs, použijte volbu IdentityFile:

sshfs -o IdentityFile=/path/to/mykey [email protected]:/path/on/remote /mountpoint

Jak to funguje

Při generování klíče získáte dva soubory: id_rsa (soukromý klíč) a id_rsa.pub (veřejný klíč). Jak jejich jména napovídají, soukromý klíč by měl být utajen a veřejný klíč může být zveřejněn.

Ověřování pomocí veřejného klíče funguje s veřejným a soukromým klíčem. Klient i server mají své vlastní klíče. Při instalaci openssh-server veřejné a soukromé klíče serveru jsou generovány automaticky. Pro klienta to musíte udělat sami.

Když se (klient) spojíte se serverem, vymění se veřejné klíče. Dostanete jeden server a váš server. Při prvním přijetí veřejného klíče serveru budete vyzváni k jeho přijetí. Pokud se tento veřejný klíč v průběhu času změní, budete upozorněni, protože probíhá možný útok MITM (Muž uprostřed), který zachycuje přenos mezi klientem a serverem.

Server zkontroluje, zda máte povoleno připojení (definováno v /etc/ssh/sshd_config) a pokud je váš veřejný klíč uveden v ~/.ssh/authorized_keys soubor. Možné důvody odmítnutí veřejného klíče:

  • /etc/ssh/sshd_config:
    • Je zadáno AllowUsers nebo AllowGroups, ale uživatel vašeho serveru není uveden v seznamu skupin nebo uživatelů (výchozí není definováno, bez omezení na přihlášení uživatelů nebo skupin).
    • DenyUsers nebo DenyGroups je uvedeno a jste v seznamu uživatelů nebo skupin.
    • Pokoušíte se přihlásit jako root, ale PermitRootLogin je nastaveno na No (výchozí yes).
    • PubkeyAuthentication je nastaveno na No (výchozí yes).
    • AuthorizedKeysFile je nastaveno na jiné místo a veřejné klíče se do tohoto souboru nepřidávají (výchozí .ssh/authorized_keys, vzhledem k domácímu adresáři)
  • ~/.ssh/authorized_keys: váš veřejný klíč není přidán do tohoto souboru (pamatujte, že tento soubor je čten jako uživatel root)

Použití více klíčů

Není neobvyklé používat více klíčů. Místo spuštění ssh [email protected] -i /path/to/identity_file, můžete použít konfigurační soubor, ~/.ssh/config.

Společná nastavení jsou IdentityFile (klíče) a port. Následující konfigurace zkontroluje "id_dsa" a "bender", pouze když se připojí k ssh [email protected]:

Host yourhost
   IdentityFile ~/.ssh/id_dsa
   IdentityFile ~/.ssh/bender

Pokud vynecháte Host yourhost, nastavení se bude vztahovat na všechna připojení SSH. Pro tuto shodu hostitele lze také zadat další možnosti, například User youruser, Port 2222 atd. To by vám umožnilo spojit se s zkratkou ssh yourhost namísto ssh -p2222 [email protected] -i ~/.ssh/id_dsa -i ~/.ssh/bender.

160
Lekensteyn

Moje oblíbená metoda umožňuje automatický výběr soukromého klíče

IdentityFile ~/.ssh/%l_%[email protected]%h_id_rsa

SSH nahradí% l názvem lokálního počítače,% r vzdáleným uživatelským jménem a% h vzdáleným hostitelem, takže pokud se chci připojit ze svého počítače zvaného foo k baru jako uživatel, spustím:

ssh bar

A ssh by automaticky použil:

~/.ssh/[email protected]_id_rsa

Protože je také uložen místní hostitel, umožňuje to domovské adresáře sdílené přes NFS (jiný klíč na počítači!) Nebo dokonce identifikaci, na jakém počítači měl být klíč umístěn ...

42
Viperfang

Vzhledem k poznámce StevenRoose, že zadání mnoha klíčů trvá déle, a já si náhodou pohrávám s mnoha klávesami, rád bych navrhl své osobní řešení.

Vytvářím symbolický odkaz na klíč, který chci v té době použít, a protože se to mění jen zřídka v závislosti na tom, na kterém projektu pracuji, jsem s ním spokojený.

Zde jsem propojil své klíče pro počítače běžící pod virtuální schránkou:

$ cd .ssh/
$ ln -s adam_vbox-id_rsa.pub id_rsa.pub
$ ln -s adam_vbox-id_rsa id_rsa

$ ls -l
total 12
-rw------- 1 adam adam 1675 2013-10-04 02:04 adam_vbox-id_rsa
-rw-r--r-- 1 adam adam  396 2013-10-04 02:04 adam_vbox-id_rsa.pub
lrwxrwxrwx 1 adam adam   16 2013-10-04 02:17 id_rsa -> adam_vbox-id_rsa
lrwxrwxrwx 1 adam adam   20 2013-10-04 02:17 id_rsa.pub -> adam_vbox-id_rsa.pub
-rw-r--r-- 1 adam adam 3094 2013-10-04 02:09 known_hosts

Dalo by se také přidat opravdu rychlý skript pro přechod na jinou sadu, aniž byste museli ručně psát příkaz ln.

Opět to není řešení pouze pro dva klíče, ale pro větší počet to může být proveditelné.

1
ajhcasual