Autoryzacja kluczami (SSH) - problemy

08 maja 2010 blog security ssh

Autoryzacja kluczami (SSH), opis najcz臋艣ciej spotykanych problem贸w

Teoria

Generujemy par臋 kluczy, eksportujemy na serwer i zrobione.

ssh-keygen -t rsa #kilka razy potwierdzamy enterem
ssh-copy-id -i ~/.ssh/id_rsa.pub uzytkownik@serwerssh #kopiowanie kluczy

Programik ssh-copy-id mo偶na zast膮pi膰 doklejeniem id_rsa.pub na koniec .ssh/authorized_keys na serwerze. Po uprzednim skopiowaniu klucza publicznego, logujemy si臋 na serwer i:

cat klient-id_rsa.pub >> ~/.ssh/authorized_keys

Jeszcze inny spos贸b:

cat ~/.ssh/id_rsa.pub | ssh -p 22 uzytkownik@serwerssh 'cat >> ~/.ssh/authorized_keys'

Wi臋cej informacji na www.debian-administration.org, help.ubuntu.com oraz jimmyg.org.

Je艣li wszystko posz艂o dobrze, w tym momencie dost臋p do serwera powinien by膰 mo偶liwy bez podawania has艂a.

Gdyby dost臋p wci膮偶 by艂 niemo偶liwy bez podawania has艂a, przyczyn mo偶e by膰 kilka.

Firewall

Naprawd臋, sprawd藕 2 razy konfiguracj臋 firewalla, forwardowanie port贸w w routerze, wpisy w /etc/hosts.allow i /etc/hosts.deny, konfiguracj臋 wszelkich filtr贸w w stylu iplist. Jak sko艅czysz, sprawd藕 jeszcze raz. Wi臋kszo艣膰 b艂臋d贸w jest spowodowana pomy艂k膮 cz艂owieka, wi臋c na 80% problem jest spowodowany przez zapomnienie o kt贸rej艣 ze wspomnianych rzeczy.

Wi臋cej informacji (niewiele wi臋cej ;)) na forums.gentoo.org.

Ustawienia serwera

Chodzi o akceptowane sposoby 艂膮czenia si臋 z serwerem SSH. Ja mam w艂膮czon膮 autoryzacj臋 has艂em (tak na wszelki wypadek) i kluczami. Odpowiadaj膮 za to nast臋puj膮ce wpisy w /etc/ssh/sshd_config:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes

Po zmianie, nale偶y zrestartowa膰 serwer ssh. W zale偶no艣ci od dystrybucji:

sudo /etc/rc.d/sshd restart

lub

sudo /etc/init.d/sshd restart

Uprawnienia

Nale偶y si臋 upewni膰, 偶e pliki maj膮 nadane odpowiednie uprawnienia (na serwerze i na klientach).

chmod 700 ~/.ssh
chmod 644 ~/.ssh/*
chmod 600 ~/.ssh/id_rsa

OpenSSH 5.4

Problem objawia si臋 komunikatem:

debug3: no such identity: /home/dmn/.ssh/id_dsa

Nale偶y si臋 w pierwszej kolejno艣ci upewni膰, 偶e prawa dost臋pu s膮 dobrze ustawione (patrz: punkt wy偶ej). Natomiast we wspomnianej wersji OpenSSH musimy wskaza膰 po艂o偶enie kluczy klient贸w uprawnionych do logowania bez podania has艂a. Odpowiada za to nast臋puj膮cy wpis w konfiguracji (/etc/ssh/sshd_config):

AuthorizedKeysFile %h/.ssh/authorized_keys

Magiczne "%h" m贸wi serwerowi ssh, 偶eby przeszuka艂 katalog domowy u偶ytkownika.

Wi臋cej informacji na www.gossamer-threads.com.

Odmowa u偶ycia klucza

Problem objawia si臋 komunikatem:

Agent admitted failure to sign using the key

W tym przypadku rozwi膮za艅 jest kilka.

  1. Ustawiamy zmienn膮 przed po艂膮czeniem si臋 z serwerem:

    SSH_AUTH_SOCK=0 ssh uzytkownik@serwerssh
    
  2. U偶ywamy ssh-add, kt贸ry powinien doda膰 nasz膮 to偶samo艣膰 do agenta autoryzacji:

    ssh-add; ssh uzytkownik@serwerssh
    
  3. Je艣li u偶ywamy gnome, prawdopodobnym sprawc膮 jest demon seahorse.

    gconftool-2 --set -t bool /apps/gnome-keyring/daemon-components/ssh false
    

Wi臋cej informacji na bugs.launchpad.net.

No such identity

Problem objawia si臋 komunikatem:

debug1: Next authentication method: publickey
debug1: Trying private key: /home/dmn/.ssh/jakasdziwnanazwa
debug3: no such identity: /home/dmn/.ssh/jakasdziwnanazwa

Rozwi膮zanie: podanie 艣cie偶ki do pliku id_rsa:

ssh -i ~/.ssh/id_rsa serwer

Dropbear

Ostatecznym rozwi膮zaniem, nie sprawdzonym przeze mnie, jest instalacja alternatywnego oprogramowania.

Wi臋cej informacji na www.cybermilitia.net.

Nadal nie dzia艂a

No trudno, mo偶e tak mia艂o by膰... Zbierz pliki konfiguracji, listingi plik贸w z katalog贸w .ssh oraz informacje debugera i udaj si臋 z tak przygotowan膮 paczuszk膮 na jakie艣 forum linuksowe :)

Na koniec jeszcze jak w艂膮czy膰 wspomniane informacje. Na serwerze (z uprawnieniami root):

`which sshd` -ddd -p 2222

Na kliencie:

ssh -vvv uzytkownik@serwerssh -p 2222