Strona 1 z 1

[+] Logowanie przez ssh bez hasła - klucz RSA (ciągle pyta o hasło)

: 14 kwietnia 2010, 19:24
autor: pmielcza
Potrzebuje do robienia kopii zapasowych na innym serwerze dostać się do niego przez (scp lub ssh) bez hasła przez klucz RSA. Wszystko robiłem tak jak opisano:
  1. Generuję na użytkowniku:

    Kod: Zaznacz cały

     "bacuser" klucz
    ssh-keygen -t rsa
  2. Kopiowanie na zdalny serwer dla użytkownika "bacuser"

    Kod: Zaznacz cały

    scp /home/użytkownik/.ssh/id_rsa.pub użytkownik@zdalny_serwer:~/
  3. Logowanie na zdalny serwer:

    Kod: Zaznacz cały

    ssh użytkownik@zdalny_serwer
  4. Dopisanie klucza:

    Kod: Zaznacz cały

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
Na zdalnym serwerze sshd_config wygląda tak:

Kod: Zaznacz cały

 # Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2 - zmieniamy aby bylo mozliwe logowanie (no)
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords - domyslnie chasz i yes
#PasswordAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
# UsePAM yes

Po wpisaniu:

Kod: Zaznacz cały

debian:/# ssh -i /home/bacuser/.ssh/authorized_keys bacuser[EMAIL="pmielcza@192.168.1.7"]@192.168.1.7[/EMAIL]
Warning: Identity file /home/bacuser/.ssh/authorized_keys not accessible: No such file or directory.
bacuser@192.168.1.7's password:

lub:

Kod: Zaznacz cały

debian:/# ssh [EMAIL="bacuser@192.168.1.7"]bacuser@192.168.1.7[/EMAIL]
bacuser@192.168.1.7's password:
Czyli zawsze chce hasło. Dlaczego? Co jest nie tak?

: 14 kwietnia 2010, 20:30
autor: genobis
Sprawdź auth.log na zdalnym serwerze, powinna być tam informacja o błędzie.

Zdaje mi się też, że plik ~/.ssh/authorized_keys powinien mieć prawa 600 (a katalog .ssh - 700), upewnij się, że tak jest.

: 14 kwietnia 2010, 21:33
autor: pmielcza
Uprawnienia są w porządku.
Ale... problem był gdzie indziej - już mam.

Podczas próby zalogowania na inny serwer byłem zalogowany jako root (i klucz czytany był przez roota).
Gdy tylko zalogowałem się na konto "bacuser" i zrobiłem próbę - poszło bez hasła. Jednak dalej męczyłem temat i aby zalogować się z poziomu konta root na zewnętrzny serwer jako "bacuser" - bez hasła przez RSA należy wpisać (jako root):

Kod: Zaznacz cały

ssh -i /home/bacuser/.ssh/id_rsa bacuser[EMAIL="bacuser@192.168.1.7"]@192.168.1.7[/EMAIL]
A aby skopiować plik z poziomu root na konto "bacuser" bez podawania hasła:

Kod: Zaznacz cały

scp -i /home/bacuser/.ssh/id_rsa /home/bacuser/xxx.txt bacuser@192.168.1.7:~/

To tyle. Może komuś się to przyda.