SSH: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
Zeile 202: Zeile 202:
 
     Wenn keine [bind_address:] angegeben wird localhost eingesetzt
 
     Wenn keine [bind_address:] angegeben wird localhost eingesetzt
  
  ssh -p '''''SERVERPORT''''' -f -g -N  -l ''USER'' ''SSHSERVER'' -L ''BINDADDRESS'':''LOCALPORT'':''ZIEL'':''ZIELPORT''
+
  ssh -p '''''SERVERPORT''''' -f -g -N  -l '''''USER''''' '''''SSHSERVER''''' -L '''''BINDADDRESS''''':'''''LOCALPORT''''':'''''ZIEL''''':'''''ZIELPORT'''''
  
Alles was auf ''BINDADDRESS'' port ''LOCALPORT'' ankommt schicke durch tunnel zu ''ZIEL'' port ''ZIELPORT''
+
Alles was auf '''''BINDADDRESS''''' port '''''LOCALPORT''''' ankommt schicke durch tunnel zu '''''ZIEL''''' port '''''ZIELPORT'''''
  
 
Beispiele:
 
Beispiele:

Version vom 13. Juli 2012, 10:14 Uhr

Clientseite

ssh (OpenSSH client) ist ein Programm um auf einen entfernten Rechner zuzugreifen und dort Kommandos auszuführen. Es ersetzt die Programme rlogin und rsh und stellt eine sichere verschlüsselte Verbindung zwischen zwei Rechnern durch ein (unsicheres) Netz her.

ssh verbindet sich mit dem Zielrechner, worauf der Benutzer seine Identität über verschiedene Methoden nachweisen muss.

ssh [Optionen] Benutzer@Zielrechner [Kommando]

Wenn ein Kommando angegeben wird, wird dieses anstelle der Login-Shell ausgeführt.

Optionen

  • -1 : Erzwingt die ausschließliche Benutzung von ssh Protokollversion 1
  • -2 : Erzwingt die ausschließliche Benutzung von ssh Protokollversion 2
  • -4 : Erzwingt die ausschließliche Benutzung von IPv4 Adressen
  • -6 : Erzwingt die ausschließliche Benutzung von IPv6 Adressen
  • -b Quelladresse : Benutzt die Quelladresse als Ursprung für die Verbindung. Nur nützlich bei Systemen mit

mehreren (IP-)Adressen

  • -C : Aktiviert Kompression falls möglich. Dies ist für langsame Verbindungen (z.B. über 56k Modem) gedacht und

würde schnelle Netzwerke verlangsamen

  • -l Benutzer : Gibt Benutzer an, alternativ zu Benutzer@Zielrechner
  • -p port : Gibt Zielport an
  • -V : Zeigt die Versionsnummer an
  • -v : ausführliche Ausgabe
  • -X : Erlaubt X11 forwarding, damit können entfernte Programme mit grafischen Benutzerinterface (GUI) lokal angezeigt werden
  • -x : Verbietet X11 forwarding

Beispiele

Zugriff auf einen bisher unbekannten Zielrechner

root@zero:~# ssh root@alita
The authenticity of host 'alita (192.168.242.10)' can't be established.
RSA key fingerprint is 8c:d1:1f:d2:5e:76:cd:75:74:c4:b7:b2:c7:f6:50:78.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'alita,192.168.242.10' (RSA) to the list of known hosts.
root@alita's password: Passwort_das_nicht_angezeigt_wird
...
root@alita:~#

Um die Identität des Zielrechners zu verifizieren, kann man den den Fingerprint des öffentlichen RSA Schlüssels auf der Serverseite ausgeben lassen. Dieser kann dann mit dem oben angezeigten verglichen werden.

Zugriff auf bekannten Zielrechner

root@zero:~# ssh alita
root@alita's password: Passwort_das_nicht_angezeigt_wird
...
root@alita:~#

Zugriff als Benutzer christian und auf Port 9998

root@zero:~# ssh alita -l christian -p 9998
christian@alita's password: Passwort_das_nicht_angezeigt_wird
...
christian@alita:~$

Ausführen eines Kommandos auf dem Zielrechner

root@zero:~# ssh alita cat /etc/hostname
root@alita's password:
alita
root@zero:~#

Ausführen eines grafischen Programms auf dem Zielrechner und lokal anzeigen

root@zero:~# ssh -X root@alita kate

Datei:Kate.jpg

Authentifizierung mit Schlüssel

Schlüsselpaar erstellen

xinux@zero:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xinux/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/xinux/.ssh/id_rsa.
Your public key has been saved in /home/xinux/.ssh/id_rsa.pub.
The key fingerprint is:
a7:13:ec:54:a3:4f:29:32:f8:98:04:ea:0c:b9:62:04 xinux@zero
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|E .       o      |
|.o . . . o o     |
|+.  o o S +      |
|=. . + = B       |
|o+  o . + .      |
|o        .       |
|                 |
+-----------------+
xinux@zero:~$

Übertragen des öffentlichen Schlüssels

xinux@zero:~$ ssh-copy-id -i .ssh/id_rsa.pub root@alita
root@alita's password: Passwort_das_nicht_angezeigt_wird
Now try logging into the machine, with "ssh 'root@alita'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

xinux@zero:~$

Einloggen auf Remoterechner

root@zero:~# ssh root@alita
Linux alita 2.6.28-13-generic #44-Ubuntu SMP Tue Jun 2 07:57:31 UTC 2009 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright. 

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/ 

0 packages can be updated.
0 updates are security updates.

Last login: Thu Jul  2 13:54:13 2009 from zero.alpha.quadrant
root@alita:~#


scp secure copy

scp steht für Secure Copy und ermöglicht es, Dateien in einem Netzwerk zu kopieren. Es baut auf ssh auf und benutzt entsprechend Authentifizierung und Verschlüsselung.

scp [Optionen] Benutzer@Rechner1:/Pfad/zu/Datei lokaler_Dateipfad
scp [Optionen] lokaler Dateipfad Benutzer@Rechner2:/Pfad/zu/Datei2

Optionen

  • -1 : Erzwingt die ausschließliche Benutzung von ssh Protokollversion 1
  • -2 : Erzwingt die ausschließliche Benutzung von ssh Protokollversion 2
  • -4 : Erzwingt die ausschließliche Benutzung von IPv4 Adressen
  • -6 : Erzwingt die ausschließliche Benutzung von IPv6 Adressen
  • -C : Benutzt Komprimierung
  • -P port: Benutzt Port auf dem Zielrechner; Achtung: großes P!
  • -p : Verändert nicht die Zeiten der letzten Veränderung der Datei
  • -r : rekursives Kopieren; scp folgt dabei auch symbolischen Links
  • -v : ausführliche Ausgabe


Beispiele

Kopieren aller Dateien und Verzeinissen von einem lokalen Verzeichnis in ein entferntes Verzeichnis

root@zero:~# scp -r /etc/* root@alita:/tmp/
root@alita's password: 
powerbtn.sh                                 100%  517     0.5KB/s   00:00 
...

Kopieren eines entfernten Verzeichnisses in ein lokales Verzeichnis

root@zero:~# scp -r root@alita:/root /root/alita_backup/
root@alita's password:     
.bashrc                                      100% 2227     2.2KB/s   00:00  
...

Serverseite

SSH Server installieren

root@alita:~# apt-get install openssh-server
...

Konfigurationsdatei

/etc/ssh/sshd_config

# 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                                    
...

Zusätzlichen Port zum Lauschen auf Anfragen hinzufügen

/etc/ssh/sshd_config

# What ports, IPs and protocols we listen for
Port 22   
Port 9998                             
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::                                                           
#ListenAddress 0.0.0.0

RSA Key Fingerprint anzeigen

root@alita:/etc/ssh# ssh-keygen -f /etc/ssh/ssh_host_rsa_key.pub -l
2048 8c:d1:1f:d2:5e:76:cd:75:74:c4:b7:b2:c7:f6:50:78 /etc/ssh/ssh_host_rsa_key.pub (RSA)

SSH Tunnel (Port Forwarding)

-f  lässt den Prozess im Hintergrund laufen
-g  erlaubt remoteusern den lokal geöffneten ssh tunnel zu benutzen
-p  gibt den Port an über den sich SSH verbinden soll
-N  ist eine nützliche Option um das öffnen einer remoteshell zu unterbinden
-R  leitet den Port vom remoteserver auf localhost weiter
-L  leitet den Port von localhost auf remoteserver weiter 
    Format [bind_address:]port:host:hostport
    Wenn keine [bind_address:] angegeben wird localhost eingesetzt
ssh -p SERVERPORT -f -g -N  -l USER SSHSERVER -L BINDADDRESS:LOCALPORT:ZIEL:ZIELPORT

Alles was auf BINDADDRESS port LOCALPORT ankommt schicke durch tunnel zu ZIEL port ZIELPORT

Beispiele:

  • Umleiten von Jdownloader Linkgrabber von alice aus
    • bob port 9666 ---> alice port 9666
root@alice:~# ssh -f -N SSHSERVER -R localhost:9666:localhost:9666
  • Umleiten von VNC von bob aus
    • bob port 5900 ---> donald port 5900
root@bob:~# ssh -f -N donald -L 5900:localhost:5900
  • Umleiten von Samba von charlie aus
    • donald port 139 ---> charlie port 139
ssh -p 9387 -f -g -N SSHSERVER -L 139:ZIEL:139


Ports schliessen:

fuser -vk -n tcp 139