Má být klíč ssh označen jako id_rsa?

110

Tento problém jsem narazil několikrát při vytváření sestavovacích serverů s ověřováním klíčů.

Zajímalo by mě, jestli to má někdo jiný. Mám několik klíčů pro svého současného uživatele, kteří se mohou připojit k různým strojům. Řekněme stroj1 a stroj2. Můj veřejný klíč jsem vložil do příslušného souboru authorized_keys. První z nich jsem pojmenoval první klíč id_rsa a druhý klíčový ohýbač.

Když se pokouším připojit k ohýbání, získávám následující výstup s mým podrobným spojením ssh

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 vidíte výše. Je to správně? Pokud ano, proč? Jak mohu získat více klíčů? Vím, že je to problém, který vidím přerušovaně, protože doma mám více klíče bez velkých problémů.

Chtěl bych také ocenit přehled o tom, jak styková místa a soukromé klíče komunikují s klientem a serverem. Myslel jsem, že mám docela slušný nápad, ale zřejmě něco chybí.

Prosím, děkuji.

    
dané myusuf3 17.03.2011 16:37

3 odpovědi

136

Ve výchozím nastavení ssh vyhledává souboryid_dsa aid_rsa. Klíče nemusí být pojmenovány takto, můžete jej pojmenovatmykey stejně, nebo dokonce umístit do jiného adresáře. Pokud však provedete některý z těchto příkazů, musíte explicitně odkazovat na klíč v příkazu ssh takhle:

ssh user@server -i /path/to/mykey

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

sshfs -o IdentityFile=/path/to/mykey user@host:/path/on/remote /mountpoint

Jak to funguje

Při generování klíče získáte dva soubory:id_rsa (soukromý klíč) aid_rsa.pub (veřejný klíč). Jak naznačují jejich názvy, soukromý klíč by měl být utajen a veřejný klíč může být publikován veřejnosti.

Autentizace veřejných klíčů funguje s veřejným a soukromým klíčem. Klient i server mají vlastní klíče. Při instalaciopenssh-server jsou automaticky generovány veřejné a soukromé klíče serveru. Pro klienta to budete muset udělat sám.

Když se (klient) připojíte ke serveru, vymění se veřejné klíče. Tyto servery obdržíte a server vaší. Při prvním příjmu veřejného klíče serveru budete požádáni o jeho přijetí. Pokud se tento veřejný klíč mění po určitou dobu, budete varováni, protože se děje možný útok MITM (Man in the middle), který zachycuje provoz mezi klientem a serverem.

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

  • /etc/ssh/sshd_config:
    • AllowUsers neboAllowGroups je zadán, ale uživatel vašeho serveru není uveden v seznamu skupin nebo uživatelů (výchozí nastavení není definováno a uživatelům nebo skupinám se neomezuje při přihlašování).
    • DenyUsers neboDenyGroups a jste v seznamu uživatelů nebo skupin.
    • Pokoušíte se přihlásit jako root, alePermitRootLogin je nastaven naNo (výchozíyes).
    • PubkeyAuthentication je nastaveno naNo (výchozíyes).
    • AuthorizedKeysFile je nastaveno na jiné místo a veřejné klíče nejsou přidány do tohoto souboru (výchozí.ssh/authorized_keys, vztaženo k doméně)
  • ~/.ssh/authorized_keys: váš veřejný klíč není v tomto souboru přidán (všimněte si, že tento soubor je čten jako uživatel root)

Použití více kláves

Není neobvyklé používat více klíče. Namísto spouštěníssh user@host -i /path/to/identity_file můžete použít konfigurační soubor~/.ssh/config.

Obecná nastavení jsou IdentityFile (klíče) a port. Další konfigurace bude kontrolovat "id_dsa" a "bender" pouze při připojení sssh youruser@yourhost:

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

Pokud vynecháteHost yourhost, nastavení se bude vztahovat na všechna připojení SSH. Pro tento hostitelský zápas mohou být také zadány další možnosti, jako jeUser youruser,Port 2222 atd. To vám umožní připojit se zkratkoussh yourhost namístossh -p2222 youruser@yourhost -i ~/.ssh/id_dsa -i ~/.ssh/bender.

    
odpověděl Lekensteyn 17.03.2011 16:58
30

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

IdentityFile ~/.ssh/%l_%r@%h_id_rsa

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

ssh bar

A ssh automaticky použije:

~/.ssh/foo_user@bar_id_rsa

Jelikož je také uložen místní hostitel, umožňují sdílení domovských adresářů přes NFS (různé klíče na stroj!) nebo dokonce zjistit, který stroj má být klíčovým klíčem ...

    
odpověděl Viperfang 19.02.2014 19:54
0

Vezmeme-li v úvahu StevenRooseovou poznámku, že trvá déle specifikovat mnoho klíčítek, a já si hraji s mnoha klíči, chtěl bych navrhnout moje osobní řešení.

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

Zde jsem se připojil k mým klávesám pro počítače spuštěné pod virtualboxem:

$ 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ě zadat příkaz ln .

Opět to není řešení pouze pro dva klíče, ale pro větší číslo to může být funkční.

    
odpověděl ajhcasual 04.10.2013 16:43