# SSH - ändern von Password auf Key Authentication

## oma

Hallo

Ich habe einen kleinen Server im Keller den ich per SSH erreichen kann. Noch steht der auf Password Authentication aber ich will den auf Key Authentication umstellen. Unter anderem deswegen: 

```
Feb 16 19:33:12 london sshd[4227]: Failed password for illegal user test from 193.225.158.169 port 40073 ssh2

Feb 16 19:33:14 london sshd[4229]: Illegal user www-data from 193.225.158.169

Feb 16 19:33:14 london sshd[4229]: error: Could not get shadow information for NOUSER

Feb 16 19:33:14 london sshd[4229]: Failed password for illegal user www-data from 193.225.158.169 port 40574 ssh2

Feb 16 19:33:17 london sshd[4231]: error: Could not get shadow information for mysql

Feb 16 19:33:17 london sshd[4231]: Failed password for mysql from 193.225.158.169 port 40665 ssh2

Feb 16 19:33:19 london sshd[4233]: Failed password for operator from 193.225.158.169 port 40794 ssh2

Feb 16 19:33:20 london sshd[4235]: Failed password for adm from 193.225.158.169 port 41191 ssh2

Feb 16 19:33:22 london sshd[4237]: error: Could not get shadow information for apache

Feb 16 19:33:22 london sshd[4237]: Failed password for apache from 193.225.158.169 port 41249 ssh2

Feb 16 19:33:24 london sshd[4239]: Illegal user irc from 193.225.158.169

Feb 16 19:33:24 london sshd[4239]: error: Could not get shadow information for NOUSER

Feb 16 19:33:24 london sshd[4239]: Failed password for illegal user irc from 193.225.158.169 port 41405 ssh2

Feb 16 19:33:25 london sshd[4241]: Illegal user irc from 193.225.158.169
```

 Mit hatte hier im Forum mal jemand gesagt das das eine SSH Wurm oder ähnliches ist. Die IP des "Angreifers" ändert sich übrigens ständig...

Ich habe zwar dieses Doc http://www.gentoo.de/doc/de/gentoo-security.xml gefunden, mir ist aber nicht ganz klar welches File später wo genau landen muß. Ich verwende Putty unter Win und ssh unter Linux/Solaris.

Kann mir da jemand kurz ein mini how-to für den "upgrade" zusammenklimpern? Möchte ungern heut abend in den Keller laufen weil ich mich über extern ausgesperrt habe und nurnoch die Konsole hilft  :Smile: 

Danke und Gruß

Oma

----------

## tuxian

Ich habs so gemacht:

Am Client:

```
ssh-keygen -t rsa -b 2048
```

ENTER drücken und 2x ein Passwort eingeben.

Dann die erstellte Datei .ssh/id_rsa.pub vom Client auf den Server nach .ssh/authorized_keys kopieren.

Und zuletzt die /etc/ssh/sshd_config am Server anpassen, meine schaut so aus:

```
Protocol 2

PermitRootLogin no

AllowUsers markus

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys

RSAAuthentication yes

RhostsRSAAuthentication no

HostbasedAuthentication no

PasswordAuthentication no

PermitEmptyPasswords no

MaxAuthTries 1

PrintMotd yes

UseLogin no

```

----------

## oma

Danke erstmal ich werde das evt. gleich testen - eine Frage aber: Wie kann putty denn die Keys generieren? Du gehst in deinem Beispiel ja von einem Linux Client aus...

----------

## tuxian

Unter Windows mit Putty musst du folgendes machen:

Vom Client die erstellte Datei .ssh/id_rsa auf den Windowsrechner kopieren.

Dann sie mit dem Programm Putty Key Generator mit "Load" laden (ALL FILES WÄHLEN DAMIT ZU DIESE DATEI AUCH FINDEST) - Passwort eingeben und dann auf  "Save Privat Key" klicken.

Dann kannst du sie in Putty unter SSH -> AUTH  - "Private Key for authentication" laden!

----------

## ZX-81

 *oma wrote:*   

> Möchte ungern heut abend in den Keller laufen weil ich mich über extern ausgesperrt habe und nurnoch die Konsole hilft 

 

Das ist nicht so kritisch, weil Du zunächst die public-key Authentifizierung soweit Einrichten kannst, bis du dich ohne Passwort anmelden kannst und dann kannst Du die Passwortauthentifizierung abschalten. 

Aber was ist schon der Weg in den Keller gegen die 50 km Entfernung zu meinem Server  :Wink: 

 *oma wrote:*   

> ssh unter Linux/Solaris

 

Nicht OpenSSH ?

 *oma wrote:*   

> Ich verwende Putty unter Win

 

Kleiner Tip am Rande: Nicht den public Key verwenden den puttygen abspeichert, sondern den Text aus dem Textfenster kopieren.

----------

## tuxian

 *Quote:*   

> 
> 
> Kleiner Tip am Rande: Nicht den public Key verwenden den puttygen abspeichert, sondern den Text aus dem Textfenster kopieren.

 

Welchen Sinn hat das?

----------

## ZX-81

 *tuxian wrote:*   

>  *Quote:*   
> 
> Kleiner Tip am Rande: Nicht den public Key verwenden den puttygen abspeichert, sondern den Text aus dem Textfenster kopieren. 
> 
> Welchen Sinn hat das?
> ...

 

Bei mir hat das eine in der ~/.ssh/authorized_keys funktioniert und das andere nicht.  :Confused: 

----------

## oma

Irgendwie scheint das nicht zu klappen - ich habe die Datei für einen User (markus) erstellt, die .pub in sein home .ssh Verzeichniß als authorized_keys kopiert den private Key in Puttygen geladen und einen Key erstellt. Diesen Key in putty geladen - aber er will immer noch ein Passwort von mir und selbst wenn ich das eingebe verschwindet das Fenster direkt danach wieder. Hier meine sshd_config:

```
Protocol 2

PermitRootLogin no

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys

MaxAuthTries 1

AllowUsers markus

PermitEmptyPasswords no

UsePAM yes

X11Forwarding yes

Subsystem       sftp    /usr/lib/misc/sftp-server
```

 SSH Server hatte ich natürlich neu gestartet. Noch hab ich ein Fenster offen...  :Smile: 

----------

## fragfutter

Kommentier mal die Zeile AuthorizedKeysFile aus. 

Der default ist '%h/.ssh/authorized_keys' und das was du da stehen hast macht keinen Sinn (er muesst den key relativ zum sshd finden)

Ansonsten kannst du fuer debugzwecke einen zweiten sshd im Debugmodus auf einem anderen Port starten.

Also config editieren und dann in deinem noch vorhandenen Fenster einen zweiten sshd starten

```

sshd -d -p 2222 -f /etc/ssh/sshd_config_neu

```

mach jetzt den connect von windows aus und guck nach was im debug durchlaeuft. ggf debuglevel erhoehen.

Es gibt auch einen ssh-key-agent fuer putty den pagent. Einmal den Key laden und das passwort eintippen und ab dann fragt er nie wieder  :Wink: 

Gruss

   Christoph

----------

## ZX-81

 *fragfutter wrote:*   

> 
> 
> Es gibt auch einen ssh-key-agent fuer putty den pagent. Einmal den Key laden und das passwort eintippen und ab dann fragt er nie wieder 
> 
> 

 

Das Passwort Ist in diesem Fall die Passphrase für den private Key und mit pageant fragt er dann noch einmal pro Session (eben beim Öffnen des Keys).

----------

## oma

Also ich habe die Zeile auskomentiert - jedoch derselbe Effect. Hier der Eintrag im Log: 

```
Feb 17 15:56:06 london sshd[10555]: Failed none for markus from 213.23.165.170 port 63696 ssh2

Feb 17 15:56:06 london sshd[10555]: Authentication refused: bad
```

 Das Starten eines 2. SSHD auf Port 2222 zeigte dieses 

```
root@london markus # /usr/sbin/sshd -d -p 2222 -f /etc/ssh/sshd_config_neu

debug1: sshd version OpenSSH_3.9p1

debug1: read PEM private key done: type RSA

debug1: private host key: #0 type 1 RSA

debug1: read PEM private key done: type DSA

debug1: private host key: #1 type 2 DSA

debug1: rexec_argv[0]='/usr/sbin/sshd'

debug1: rexec_argv[1]='-d'

debug1: rexec_argv[2]='-p'

debug1: rexec_argv[3]='2222'

debug1: rexec_argv[4]='-f'

debug1: rexec_argv[5]='/etc/ssh/sshd_config_neu'

debug1: Bind to port 2222 on 0.0.0.0.

Server listening on 0.0.0.0 port 2222.

socket: Address family not supported by protocol
```

 Jedoch jedweder connect von Win aus kann nicht klappen da ich am DSL Router nur Port 22 weiter leite....

----------

## makenoob

 *oma wrote:*   

> 
> 
> Unter anderem deswegen: 
> 
> ```
> ...

 

so sah es bei mir auch aus, bevor ich den ssh-port auf einen anderen geändert hab. jetzt ist mein log allerdings sauber  :Smile: 

ich muss zwar immernoch ein passwort eingeben, aber dsa stört mich erstmal nicht weiter.

----------

## oma

Wäre natürlich auch eine Lösung - aber ich kann ja auch beides machen...Aber aus irgendeinem Grund akzeptiert er den Key den putty generiert hat nicht. Ich werd das mal mit Linux probieren...

----------

## ZX-81

 *oma wrote:*   

> Aber aus irgendeinem Grund akzeptiert er den Key den putty generiert hat nicht.

 

Das Format der von puttygen als public Key generierten Datei wird von openSHH nicht akzeptiert, wenn Du jedoch den Text nimmst der im puttygen Textfenster steht (cut & paste), gehts.

----------

## oma

Das mit Puttygen werd ich gleich mal testen...

Jedoch unter linux2linux klappt es auch nicht. Ich habe am Linuxclient ein neues keypair erstellt und das id_rsa.pub als authorized_keys im .ssh Verzeichniß des users am Server abgelegt. Trotzdem fragt er mich noch immer nach einem Passwort wenn ich ein ssh meinserver.net mache...

----------

## oma

Update: Ich habe nun mal testweise ein cut&paste per notepad aus dem puttygen Fenster in eine Textdatei gemacht, abgespeichert und putty als zu benutzenden Key gegeben. Dies endete in 

```
login as: markus

Unable to use key file "C:\Eigene Dateien\.ssh\myver_notepad.txt" (not a private key)
```

 Dann habe ich entdeckt das man in puttygen auch einen OpenSSH Key exportieren kann. Dies wiederum ergab ein ähnliches Bild: 

```
login as: markus

Unable to use key file "C:\Eigene Dateien\.ssh\myver_OpenSSH.txt" (OpenSSH SSH2 private key)
```

 Also irgendwas scheint hier falsch zu sein...Hier die aktuelle sshd_config:

```
Protocol 2

PermitRootLogin no

RSAAuthentication yes

PubkeyAuthentication yes

PermitEmptyPasswords no

X11Forwarding yes

Subsystem       sftp    /usr/lib/misc/sftp-server
```

also noch kleiner kann sie ja kaum werden...

----------

## ZX-81

 *oma wrote:*   

> Update: Ich habe nun mal testweise ein cut&paste per notepad aus dem puttygen Fenster in eine Textdatei gemacht, abgespeichert und putty als zu benutzenden Key gegeben. Dies endete in 
> 
> ```
> login as: markus
> 
> ...

 

Jetzt hast Du putty aber ganz schön verwirrt  :Wink: 

Putty braucht den von puttygen erzeugten private key. (Und putty versteht natürlich das Format das puttygen erzeugt)

Den Text für den public key solltest Du per cut & past zum Server transferieren und dort in die authorized_keys des entsprechenden Users eintragen.

 *oma wrote:*   

> Hier die aktuelle sshd_config:
> 
> ```
> Protocol 2
> 
> ...

 

Normalerweise funktioniert public-key authentifizierung bei gentoo in der default config. Du solltest nach jeder Konfigurationsänderung in der /etc/ssh/sshd_config den daemon neustarten (/etc/init.d/sshd restart)

Ich verwende übrigens die DSA Schlüssel (kein spezieller Grund), wenn also ein Tip von mir nicht funktioniert, liegt es vielleicht daran.

----------

## oma

Also irgendwie klappt das alles nicht richtig. Ich hab nochmal von vorn angefangen - sogar mit einem anderen Client (MAC). Ich habe in dem .ssh Verzeichniß am Server alles gelöscht und am MAC ssh-keygen -t rsa -b 2048 gemacht dann die neu erstellte id_rsa.pub zum Server ins /home/markus/.ssh/authorized_keys kopiert. Dann hab ich 

```
ssh Server -l markus -i /Users/markus/.ssh/id_rsa
```

 gemacht - und im Log sehe ich nur

```
 Feb 17 19:53:46 london sshd[11691]: Authentication refused: bad
```

 Muss ich noch was mit der known_host oder so tun? Ich kann doch nicht so dämlich sein, oder?  :Smile: 

----------

## ZX-81

 *oma wrote:*   

>  mit einem anderen Client (MAC)

 

Ist es beim MAC auch openSSH (SSH verwendet ein etwas anderes Format für die Keys)?

 *oma wrote:*   

> Dann hab ich 
> 
> ```
> ssh Server -l markus -i /Users/markus/.ssh/id_rsa
> ```
> ...

 

Wenn Du den Client richtig konfiguriert hast, reicht

```
ssh markus@Server
```

 *oma wrote:*   

> Muss ich noch was mit der known_host oder so tun?

 

Nein die known_hosts sind dafür da, dass keiner dem Client einen falschen Server unterjubeln kann.

----------

## makenoob

also ich hab mal sowas ähnliches gemacht und mir half dieser Thread dabei. danach gings; allerdings waren das nur zwei linux-kisten, von der einer auf der anderen nen befehl neu starten sollte, also ohne putty. Ich hatte es mal kurze Zeit mit putty versucht aber nach kurzem probieren funzte es nicht, und somit hab ichs dann aufgegeben, weil ich eh nicht so oft per ssh auf die rechner musste.

HTH

Marc

----------

## oma

So - also der MAC benutzt auch OpenSSH - also genau wie die gentoo Kiste. Ich habe mal anhand des anderen Threads mal eine leere passphrase benutzt, jedoch dasselbe Ergebniß beim Client mit ssh -v markus@server: :

```
~/.ssh markus$ ssh -v markus@london

OpenSSH_3.6.1p1+CAN-2004-0175, SSH protocols 1.5/2.0, OpenSSL 0x0090702f

debug1: Reading configuration data /etc/ssh_config

debug1: Rhosts Authentication disabled, originating port will not be trusted.

debug1: Connecting to london [192.168.1.3] port 22.

debug1: Connection established.

debug1: identity file /Users/markus/.ssh/identity type -1

debug1: identity file /Users/markus/.ssh/id_rsa type 1

debug1: identity file /Users/markus/.ssh/id_dsa type -1

debug1: Remote protocol version 2.0, remote software version OpenSSH_3.9p1

debug1: match: OpenSSH_3.9p1 pat OpenSSH*

debug1: Enabling compatibility mode for protocol 2.0

debug1: Local version string SSH-2.0-OpenSSH_3.6.1p1+CAN-2004-0175

debug1: An invalid name was supplied

Configuration file does not specify default realm

debug1: An invalid name was supplied

A parameter was malformed

Validation error

debug1: An invalid name was supplied

Configuration file does not specify default realm

debug1: An invalid name was supplied

A parameter was malformed

Validation error

debug1: SSH2_MSG_KEXINIT sent

debug1: SSH2_MSG_KEXINIT received

debug1: kex: server->client aes128-cbc hmac-md5 none

debug1: kex: client->server aes128-cbc hmac-md5 none

debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent

debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP

debug1: SSH2_MSG_KEX_DH_GEX_INIT sent

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

debug1: Host 'london' is known and matches the RSA host key.

debug1: Found key in /Users/markus/.ssh/known_hosts:2

debug1: ssh_rsa_verify: signature correct

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,password,keyboard-interactive

debug1: Next authentication method: publickey

debug1: Trying private key: /Users/markus/.ssh/identity

debug1: Offering public key: /Users/markus/.ssh/id_rsa

debug1: Authentications that can continue: publickey,password,keyboard-interactive

debug1: Trying private key: /Users/markus/.ssh/id_dsa

debug1: Next authentication method: keyboard-interactive

debug1: Authentications that can continue: publickey,password,keyboard-interactive

debug1: Next authentication method: password
```

 Server bloß: 

```
eb 18 19:16:21 london sshd[17705]: Authentication refused: bad
```

----------

## ZX-81

```

debug1: Offering public key: /Users/markus/.ssh/id_rsa

```

Sieht so aus, wie wenn Du auf dem MAC unter id_rsa den public und nicht den private Key eingetragen hättest.

----------

## oma

Nö, der mit ssh-keygen -t rsa -b 2048 erstellte Key ist schon richtig. Hier die erste Zeile aus der is_rsa: 

```
-----BEGIN RSA PRIVATE KEY-----

MIIEoQIBAAKCAQEA13ez+ecjeLwaSPN70B1xWODai0U9o2gtV8wnfwNSo649ZGjT
```

 das ist es bestimmt nicht. Schätze wenn du das bei dir testet versucht er auch zuerst den public Key anzubieten...

----------

## ZX-81

 *oma wrote:*   

> Nö, der mit ssh-keygen -t rsa -b 2048 erstellte Key ist schon richtig. Hier die erste Zeile aus der is_rsa: 
> 
> ```
> -----BEGIN RSA PRIVATE KEY-----
> 
> ...

 

Ja, das sieht richtig aus. Zugriffsrechte?

Nein bei mir macht er nichts mit dem public-key

```

debug1: Authentications that can continue: publickey,keyboard-interactive

debug1: Next authentication method: publickey

debug1: Trying private key: /home/zx/.ssh/identity

debug1: Trying private key: /home/zx/.ssh/id_rsa

debug1: Trying private key: /home/zx/.ssh/id_dsa

debug1: read PEM private key done: type DSA

debug1: Authentication succeeded (publickey).

```

----------

## root_tux_linux

Hat sich erledigt  :Smile: 

Die Gentoo Anleitung ist schlicht weg nicht up2date und nicht ausreichend!

Mit ner Anleitung für Debian ging das ganze Problemlos 

http://www.debianhowto.de/howtos/de/sshconfig/c_sshconfig.html#sshconfig_intro <------------- Für alle die Probleme haben  :Smile: 

----------

## oma

Bevor ich die nu ganz verinnerliche - weißt du was es jetzt genau war?

----------

## root_tux_linux

 *oma wrote:*   

> Bevor ich die nu ganz verinnerliche - weißt du was es jetzt genau war?

 

Nicht wirklich!

In der Debian Anleitung wird einiges mehr getan z.B. mehr Optionen in der sshd_conf,  Rechte eingestellt,  ne config in ~/.ssh angelegt  usw.

Also darauf geachtet hab ich von daher eh nicht was falsch sein könnte wenn eh soviel fehlt!

Btw. Es hat sogar ne Anleitung für Putty als Client dabei  :Smile: 

----------

## oma

Auch wenn´s hier grad einen "anti Debian Thread" gibt - also mit der Anleitung klappt´s!  :Very Happy:   DSA sowohl RSA.

Eine Frage hab ich noch: Ich habe ja nun hier am MAC ein KeyPair erstellt - kann ich meinen privaten Key benutzen, ihn in puttygen ummodeln und für denselben Benutzer an einem anderen Rechner halt eben mit Putty benutzen?

Sollte in dem Key irgendwie die MAC-Addresse, CPU-ID, o.ä. versteckt sein klappt das natürlich nicht...

----------

## ZX-81

 *oma wrote:*   

> 
> 
> Eine Frage hab ich noch: Ich habe ja nun hier am MAC ein KeyPair erstellt - kann ich meinen privaten Key benutzen, ihn in puttygen ummodeln und für denselben Benutzer an einem anderen Rechner halt eben mit Putty benutzen?
> 
> 

 

Das könntest Du machen, besser ist es aber für jeden Client einen eigenen Schlüssel zu erzeugen (Du kannst in die authorized_keys mehrere eintragen)

----------

