SSH: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
 
(19 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==Clientseite==
+
= '''S'''ecure '''SH'''ell =
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.
+
* Stellt eine sichere Verbindung zu einem entfernten Rechner her
 +
* Dies gelingt durch die Verschlüsselung der Datenpakete
 +
* Der Weg durch das Netz darf dabei unsicher sein
 +
* Standardmäßig lauscht SSH auf Port 22
 +
* '''ssh [Optionen] Benutzer@Zielrechner [Kommando]'''
  
ssh [Optionen] Benutzer@Zielrechner [Kommando]
+
= Oft gebrauchte Optionen =
  
Wenn ein Kommando angegeben wird, wird dieses anstelle der Login-Shell ausgeführt.
+
* '''-p''' ''port_nummer'': gibt einen alternativen Port an
 +
* '''-i''' ''/pfad/zum/privaten/schlüssel'': gibt einen alternativen privaten Schlüssel zur Authentifizierung an
 +
* '''-J''' ''benutzer@jumphost'': gibt einen Proxy-Rechner an, von dem man zum Ziel Rechner springt
 +
* '''-X''': Erlaubt X11 Forwarding, um grafische Programme lokal auszuführen
 +
* '''-Y''': Erlaubt X11 Forwarding, unabhängig von lokalen Sicherheitseinstellungen
  
===Optionen===
+
= '''S'''ecure '''S'''hell '''C'''opy =
* -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
+
* Ermöglicht das Kopieren von Dateien auf einen entfernten Rechner
 +
* Baut auf die Authentifizierung und Verschlüsselung von SSH auf
  
Zugriff auf einen bisher unbekannten Zielrechner
+
= Konfiguration =
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
+
* Die Benutzerkonfiguration für SSH liegt unter ''~/.ssh/config''
root@zero:~# ssh alita
+
* In ''~/.ssh/authorized_keys'' stehen öffentliche Schlüssel, die sich passwortlos authentifizieren dürfen
root@alita's password: Passwort_das_nicht_angezeigt_wird
 
...
 
root@alita:~#
 
  
Zugriff als Benutzer christian und auf Port 9998
+
== Jump Host eintragen ==
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
+
* Damit man nicht jedesmal den langen Befehlt tippen muss, um einen JumpProxy zu benutzen, kann man einen Alias setzen
root@zero:~# ssh alita cat /etc/hostname
+
* '''vim ~/.ssh/config'''
root@alita's password:
 
alita
 
root@zero:~#
 
  
Ausführen eines grafischen Programms auf dem Zielrechner und lokal anzeigen
+
Host ''Alias''
root@zero:~# ssh -X root@alita kate
+
  User ''Benutzername''
 +
  Hostname ''Name/IP des Ziels''
 +
  ProxyJump ''Name/IP des Proxys''
  
[[Image:kate.jpg]]
+
* '''ssh ''Alias'''''
  
===Authentifizierung mit Schlüssel===
+
== Alternativen privaten Schlüssel benutzen ==
====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====
+
* Falls man mehrere private Schlüssel hat kann man so seinen Default-Schlüssel wählen
xinux@zero:~$ ssh-copy-id -i .ssh/'''id_rsa.pub''' root@alita
+
* '''vim ~/.ssh/config'''
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====
+
  IdentityFile ''/pfad/zum/privaten/schlüssel''
  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
 
 
 
=ssh link=
 
#!/bin/bash
 
## skript zum öffnent von ssh links ...
 
##
 
address=`echo $1 | cut -d / -f 3`
 
gnome-terminal -e "ssh -t root@apollo ssh  root@${address} "
 
[ssh://gondor gondor]
 

Aktuelle Version vom 23. November 2023, 08:21 Uhr

Secure SHell

  • Stellt eine sichere Verbindung zu einem entfernten Rechner her
  • Dies gelingt durch die Verschlüsselung der Datenpakete
  • Der Weg durch das Netz darf dabei unsicher sein
  • Standardmäßig lauscht SSH auf Port 22
  • ssh [Optionen] Benutzer@Zielrechner [Kommando]

Oft gebrauchte Optionen

  • -p port_nummer: gibt einen alternativen Port an
  • -i /pfad/zum/privaten/schlüssel: gibt einen alternativen privaten Schlüssel zur Authentifizierung an
  • -J benutzer@jumphost: gibt einen Proxy-Rechner an, von dem man zum Ziel Rechner springt
  • -X: Erlaubt X11 Forwarding, um grafische Programme lokal auszuführen
  • -Y: Erlaubt X11 Forwarding, unabhängig von lokalen Sicherheitseinstellungen

Secure Shell Copy

  • Ermöglicht das Kopieren von Dateien auf einen entfernten Rechner
  • Baut auf die Authentifizierung und Verschlüsselung von SSH auf

Konfiguration

  • Die Benutzerkonfiguration für SSH liegt unter ~/.ssh/config
  • In ~/.ssh/authorized_keys stehen öffentliche Schlüssel, die sich passwortlos authentifizieren dürfen

Jump Host eintragen

  • Damit man nicht jedesmal den langen Befehlt tippen muss, um einen JumpProxy zu benutzen, kann man einen Alias setzen
  • vim ~/.ssh/config
Host Alias
 User Benutzername
 Hostname Name/IP des Ziels
 ProxyJump Name/IP des Proxys
  • ssh Alias

Alternativen privaten Schlüssel benutzen

  • Falls man mehrere private Schlüssel hat kann man so seinen Default-Schlüssel wählen
  • vim ~/.ssh/config
IdentityFile /pfad/zum/privaten/schlüssel