|
|
| Zeile 1: |
Zeile 1: |
| ==Clientseite== | | = '''S'''ecure '''S'''hell '''C'''opy = |
| 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 Rechenr 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'' |
|
| |
|
| ===Authentifizierung mit Schlüssel===
| | * '''ssh ''Alias''''' |
| ====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==== | | == Alternativen privaten Schlüssel benutzen == |
| 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====
| | * Falls man mehrere private Schlüssel hat kann man so seinen Default-Schlüssel wählen |
| root@zero:~# ssh root@alita
| | * '''vim ~/.ssh/config''' |
| 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:~#
| |
|
| |
|
| | | IdentityFile ''/pfad/zum/privaten/schlüssel'' |
| ===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 ''bob'' -R localhost:9666:localhost:9666
| |
| *Umleiten von VNC von bob aus
| |
| **bob port 9666 ---> quinn port 9666
| |
| root@bob:~# ssh -f -N quinn -l root -L 9666:localhost:9666
| |
| *Umleiten von Samba von charlie aus
| |
| **donald port 139 ---> charlie port 139
| |
| ssh -p 9387 -f -g -N ''SSHSERVER'' -L 139:''ZIEL'':139
| |
| | |
| ===Beispiel-Script:===
| |
| | |
| Der Kunde muss dieses Script ausführen (vorher downloaden), sodass wir Zugang haben ohne die Firewall zu bearbeiten.
| |
| | |
| Dieses script öffnet einen Tunnel auf gaius zu dem Kundenrechner.
| |
| | |
| | |
| #!/bin/bash
| |
| #Da gibt der Kunde den zu nutzenden User ein
| |
| read -p "user:" U
| |
| #Tunnel wird bei Gaius geöffnet (-R) und führt zu localhost (Rechner von Kunde) über Port 8080 (frei wählbar)
| |
| ssh -gv $U@gaius.tuxmen.de -R localhost:8080:localhost:22
| |
| | |
| | |
| | |
| ->> Nun haben wir Zugriff indem wir ssh auf gaius mit dem angegeben Port aufbauen
| |
| | |
| | |
| Ports schliessen:
| |
| fuser -vk -n tcp 139
| |
| | |
| =ssh link=
| |
| ==Firefox 3.5 and above==
| |
| (Works without installed Gnome libraries)
| |
| Type about:config into the Location Bar (address bar) and press Enter.
| |
| Right-click -> New -> Boolean -> Name: network.protocol-handler.expose.foo -> Value -> false (Replace foo with the protocol you're specifying)
| |
| Next time you click a link of protocol-type foo you will be asked which application to open it with.
| |
| | |
| Quelle:http://kb.mozillazine.org/Register_protocol
| |
| | |
| #!/bin/bash
| |
| ## skript zum öffnent von ssh links ...
| |
| ##
| |
| TERM=$(echo $1 | cut -d / -f 3)
| |
| SAVE=$IFS
| |
| IFS=":"
| |
| set $TERM
| |
| HOST=$1
| |
| PORT=$2
| |
| IFS=$SAVE
| |
| echo "HOST $HOST" >> /tmp/ssh.link
| |
| echo "PORT $PORT" >> /tmp/ssh.link
| |
| if test -z "$PORT"
| |
| then
| |
| gnome-terminal -e "ssh $HOST "
| |
| echo then >> /tmp/ssh.link
| |
| else
| |
| echo else >> /tmp/ssh.link
| |
| gnome-terminal -e "ssh $HOST -p $PORT"
| |
| fi
| |
| | |
| =Beispieleintrag fürs wiki=
| |
| ssh://gondor gondor
| |
| | |
| =vpn-pppd ssh Tunnelscript=
| |
|
| |
| ssh nagus
| |
| cat /usr/local/sbin/vpn-pppd
| |