Debain: SSH authorized_keys

[grueni]

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.293
Hallo,

mal wieder ein Problem, entweder bin ich zu doof oder es ist schon zu spät :D

Also ich will auf meinem Debian Server SSH mit Keyfile(RSA) und Login realisieren, soweit ja eigentlich kein Thema.
Ich erstelle mit PuttyGen den RSA Key (SSH-2) mit 2048 bit, speichere den privaten und kopiere den pub mit winscp in das zuvor erstelle Verzeichnis .ssh in /home/user.

Dann führe ich folgendes aus: cat rsa.pub >> authorized_keys (im .ssh Verzeichnis).
Zuvor habe ich mittels touch die authorized_keys Datei erstellt und mit 600 Rechten versehen.

Dann hab ich in der /etc/ssh/sshd_config folgendes:

Code:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile	%h/.ssh/authorized_keys

Das ist doch soweit alles richtig ? Oder muss das AuthorizedKeysFile vor %h/.ssh/authorized_keys weg, denke eher nicht :p

Dann ssh neustarten und nun sollte ich mich mittels Putty ja nur noch mit dem gültigen Key einloggen können, den man in Putty hinterlegt, bzw den Pfad zu diesem angibt, aber Pustekuchen, ich kann mich weiter ohne Private Key einloggen o.O

Ich hab nun 4 verschiedene bzw gleiche Anleitungen befolgt, habe sogar die Keys auf dem Server direkt erstellt mit ssh-keygen aber nichts funktioniert :(

Anbei mal die ganze sshd_conf:

Code:
# Package generated configuration file
# See the sshd_config(5) 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 VERBOSE

# Authentication:
LoginGraceTime 120
PermitRootLogin no
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
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
#PasswordAuthentication yes

# 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

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

Jemand nen Plan wieso das ganze nicht funktioniert ?! :freak:
 
Ich verstehe das Problem noch nicht.... Der Login fragt weiterhin nach dem Passwort,
soll aber nicht?
Hat auch das .ssh die richtigen Permissions?
 
PasswordAuthentication no

Aber erstmal sichergehen, dass du auch wirklich per Key einloggen kannst...
 
versuchs mit
AuthorizedKeysFile ~/.ssh/authorized_keys
so hab ich es bei mir

"PasswordAuthentication no"
und
"usePAM no"
 
Zuletzt bearbeitet:
"funktioniert nicht" ist übrigens keine Fehlermeldung. Was steht in der messages? der sshd ist normalerweise sehr auskunftsfreudig wenn ihm etwas nicht passt. man kann den SSHD auch im Debug-Modus starten, dann sieht man noch mehr. Aber so ist es schwer ...

AuthorizedKeysFile müßtest du normalweise garnicht ändern, die Standardwerte passen sonst auch.

Und als was hast du den putty-Key exportiert? Im OpenSSH-Key-Format?
 
AuthorizedKeysFile brauchst du gar nicht ändern/setzen. Der Default Wert (.ssh/authorized_keys) stimmt ja schon.
 
So
PasswordAuthentication no
AuthorizedKeysFile ~/.ssh/authorized_keys

Beides ändert nichts :(

Achja, Funktioniert nicht == Ich kann mich auch ohne privaten Key, denn ich in Putty noch nirgends hinterlegt habe einloggen ! Was ja eigentlich in einem "Access denied" enden sollte !

Wie gesagt, Permissions sind auf 600 für .ssh sowie fürauthorized_keys
 
Nein. Solange Password authentication aktiviert ist, kannst du dich mittels Passwort oder Key einloggen. Aber warum du immernoch reinkommst, obwohl du scheinbar PasswordAuthentication mittlerweilen ausgeschaltet hast... SSHd neugestartet?
 
Ihr gebt alle ein "AuthorizedKeysFile", also ich muss das bei keinem meiner Server.
Was ich Dir aber sagen kann ist, Du musst nicht den Inhalt der gespeicherten Public Datei auf den Server kopieren. PuttyGen zeigt Dir ja noch einen recht langen String an, diesen musst Du in deine Datei kopieren. Ich mache das mit vim..
-> vim .ssh/authorized_keys

Gruß, Domi

p.s. Falls es ein öffentlicher Server ist, könntest Du ja noch den Port umstellen. Dann erleichterst Du dein logfile ein wenig :)
 
[grueni] schrieb:
So
PasswordAuthentication no
AuthorizedKeysFile ~/.ssh/authorized_keys

Beides ändert nichts :(

Achja, Funktioniert nicht == Ich kann mich auch ohne privaten Key, denn ich in Putty noch nirgends hinterlegt habe einloggen ! Was ja eigentlich in einem "Access denied" enden sollte !
Aber mit Passwort? Mit ssh-Keys einloggen wäre ja ohne Passwort.
[grueni] schrieb:
Wie gesagt, Permissions sind auf 600 für .ssh sowie fürauthorized_keys

Das .ssh-Verzeichnis in deinem $HOME sollte 0700 haben, sonst kann keiner deine authorized_keys lesen. Auch der SSHD nicht ... das würde auch als Fehlermeldung in der messages stehen. Aber du "verheimlichst" uns ja die Fehlermeldungen (und die wird es geben!).
 
Zuletzt bearbeitet:
bu1137 schrieb:
SSHd neugestartet?
yip, sogar den server, zur Sicherheit.

Domi83 schrieb:
PuttyGen zeigt Dir ja noch einen recht langen String an, diesen musst Du in deine Datei kopieren. Ich mache das mit vim..
Ja so hab ich das ja auch gemacht ;) Wie gesagt 4 Anleitungen hab ich durch und 2 davon waren halt mit Putty-Gen auf Windows...

Mal die letzten Zeilen aus dem auth.log nach meinem einloggen mittels Putty:

Code:
frank@router:~$ sudo tail -f /var/log/auth.log
[sudo] password for frank:
Jul  5 23:27:10 router sshd[1518]: pam_unix(sshd:session): session opened for us                                                     er frank by (uid=0)
Jul  5 23:27:10 router sshd[1518]: User child is on pid 1520
Jul  5 23:27:10 router sshd[1520]: subsystem request for sftp
Jul  5 23:27:42 router sshd[1522]: Set /proc/self/oom_adj to 0
Jul  5 23:27:42 router sshd[1522]: Connection from 192.168.2.104 port 55002
Jul  5 23:27:45 router sshd[1522]: Failed none for frank from 192.168.2.104 port                                                      55002 ssh2
Jul  5 23:27:47 router sshd[1522]: Accepted password for frank from 192.168.2.10                                                     4 port 55002 ssh2
Jul  5 23:27:47 router sshd[1522]: pam_unix(sshd:session): session opened for us                                                     er frank by (uid=0)
Jul  5 23:27:47 router sshd[1522]: User child is on pid 1524
Jul  5 23:28:10 router sudo:    frank : TTY=pts/0 ; PWD=/home/frank ; USER=root                                                      ; COMMAND=/usr/bin/tail -f /var/log/auth.log

@xone92: Habs mal auf 0700 geändert, änder nichts! Aber Read/Write reicht doch eigentlich sprich 600 ?
 
Zuletzt bearbeitet:
Die ~/.ssh/authorized_keys gehört auch dem User?
 
Was steht zu dem Loginvorgang in der /var/log/messages? und wie sind die Verzeichnisrechte vom ~/.ssh/ ?

Nachtrag:

du kannst den sshd auch manuell auf einem anderen Port im Debug-Modus starten. Müßte in etwa so gehen:

/usr/sbin/sshd -p 9988 -d

9988 wäre dann die Portnummer. Wenn du dich jetzt per ssh auf den Port 9988 connectest ( ssh -p 9988 zielrechner ) siehts du alles sehr ausführlich in dem aktuellen xterm. Dann sagt der sshd dir auch sehr genau warum er dich nicht per authorized_keys rein lassen will. Auch wenn die Dateirechte nicht passen oder dem falschen User gehören. Oder wenn die authorized_keys in einem falschen Format ist.
 
Zuletzt bearbeitet:
xammu schrieb:
Die ~/.ssh/authorized_keys gehört auch dem User?

xone92 schrieb:
Was steht zu dem Loginvorgang in der /var/log/messages? und wie sind die Verzeichnisrechte vom ~/.ssh/ ?

Code:
root@router:/home/frank# tail -f /var/log/messages
Jul  5 23:35:35 router kernel: [    3.704135] intel8x0: measured clock 137294 rejected
Jul  5 23:35:35 router kernel: [    4.064121] intel8x0_measure_ac97_clock: measured 54590 usecs (7680 samples)
Jul  5 23:35:35 router kernel: [    4.064123] intel8x0: measured clock 140685 rejected
Jul  5 23:35:35 router kernel: [    4.064124] intel8x0: clocking to 48000
Jul  5 23:35:35 router kernel: [    4.322752] Adding 731128k swap on /dev/sda5.  Priority:-1 extents:1 across:731128k
Jul  5 23:35:35 router kernel: [    4.425801] EXT3 FS on sda1, internal journal
Jul  5 23:35:35 router kernel: [    4.517470] loop: module loaded
Jul  5 23:35:35 router kernel: [    4.976615] ADDRCONF(NETDEV_UP): eth0: link is not ready
Jul  5 23:35:35 router kernel: [    4.977996] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Jul  5 23:35:35 router kernel: [    4.978852] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Jap, Dateien bzw Ordner .ssh gehören frank, also mir ;)


"Aber du "verheimlichst" uns ja die Fehlermeldungen (und die wird es geben!)."
Wo finde ich die denn ?
 
Und du hast auch das # vor PasswordAuthentication no weggenommen?
 
[grueni] schrieb:
Jap, Dateien bzw Ordner .ssh gehören frank, also mir ;)


"Aber du "verheimlichst" uns ja die Fehlermeldungen (und die wird es geben!)."
Wo finde ich die denn ?

gut, die Rechte passen also schon mal. Die Meldungen sollten in der messages auftauchen, aber eben nicht unbedingt am Ende.

mache bitte mal ein grep sshd /var/log/messages | tail -n 50

Mal eine andere Frage: hast du putty so eingestellt das es den putty-Key überhaupt verwendet? Und was steht im putty-Log?
 
Zuletzt bearbeitet:
bu1137 schrieb:
Und du hast auch das # vor PasswordAuthentication no weggenommen?

Doh ! Nein wie dämlich von mir :rolleyes:
Nun mault er rum wenn ich mit einlogge von wegen PublicKey !


xone92 schrieb:
gut, die Rechte passen also schon mal. Die Meldungen sollten in der messages auftauchen, aber eben nicht unbedingt am Ende.

mache bitte mal ein grep sshd /var/log/messages | tail -n 50

Keine Ausgabe, scheint kein sshd zu finden.

Ich sollte mich ja nun so einloggen können wenn ich Putty mein PrivateKey mit gebe order ?
Gleich mal testen...

Edit: Bingo nun klappts :) Gibts denn auch ne Möglichkeit, dass ich nach dem Key mich noch einloggen kann per Passwort ? Soweit ich gelesen hab scheinbar ja, als letzte Festung für geklauten key etc.
 
[grueni] schrieb:
Edit: Bingo nun klappts :) Gibts denn auch ne Möglichkeit, dass ich nach dem Key mich noch einloggen kann per Passwort ? Soweit ich gelesen hab scheinbar ja, als letzte Festung für geklauten key etc.

sehr schön :)

du meinst per SSH-Key und zwingend dann noch das richtige Passwort?

Oder meinst du per SSH-Key oder alternativ per Passwort?

Das vom sshd nichts in der messages steht muß nichts heißen. Ich kenne es von diversen Linuxen das es dort Meldungen gibt. Das kann man unter Unix aber alles konfigurieren wo die Logs landen. Wie es bei Debian ist weiß ich nicht, habe mich in den letzten Jahren nur mit Redhat oder SuSE-Servern beschäftigt. Oder eben mit HP-UX.
 
Zuletzt bearbeitet:
Also scheint kein Unterschied zu machen ob 0700 oder 0600 (authorized_keys)
Wie gesagt, klappt jetzt, nur würde ich gerne noch den Login mit Passwort noch dazuhaben ;)

Edit: Ich meine erst Key Auth, und dann nochmal Username+Linux-Passwort, sollte doch gehen oder ? Oder täusche ich mich ?
 
Zurück
Oben