SSH

Aus Fachschaft_Informatik
Version vom 14. November 2019, 21:40 Uhr von 4felgenh (Diskussion | Beiträge) (Technische Infrastruktur der Institute hinzugefügt)
Zur Navigation springen Zur Suche springen

Secure SHell

Man kann sich mittels SSH von einem beliebigen Rechner auf seinem Informatik-Rechenzentrum-Account einloggen. Das ist nützlich z.B. wenn man vom eigenen Laptop, und nicht von einem Poolrechner aus drucken möchte. Wie SSH beim iRZ funktioniert, und was man alles tolles machen kann, ist in diesem Artikel beschrieben.

hosts

iRZ: rzssh1.informatik.uni-hamburg.de


Das Regionale Rechenzentrum (RRZ) hat auch zwei SSH-Server (rrzlogin{,2}.rrz.uni-hamburg.de), die sind aber schlecht.

Simples Einloggen

Mit folgendem Befehl kann man sich auf seinem iRZ-Account einfach einloggen:

$ ssh <kennung>@rzssh1.informatik.uni-hamburg.de

Da dies etwas nervig ist, werden im Weiteren ein paar Tricks erläutert.

Konfiguration

Die ~/.ssh/config enthaelt die Konfiguration fuer deinen SSH Client. Dort kann man viele tolle Sachen machen, zB muss man nicht immer ssh rzssh1.informatik.uni-hamburg.de machen, sondern bspw. ssh fbi. Das ist gut.

Mit folgendem Text in deiner ~/.ssh/config kannst du das auch:

Host fbi
  User 3leet
  ForwardX11 yes
  HostName rzssh1.informatik.uni-hamburg.de
  DynamicForward 7777
  #LocalForward 6631 linuxprint.informatik.uni-hamburg.de:631

Neben dem einfachen "ssh fbi" hast du nun durch

DynamicForward

auch einen lokalen SOCKS Proxy zum Tunneln. Wenn du mehr tolle Sachen mit deiner SSH-Config-Datei machen willst, schau dir

man ssh_config

an.

zu anderen Hosts

Mit Hilfe einer geeigneten ~/.ssh/config kann man von zu Hause aus sich bequem zu Hosts verbinden, die nicht direkt zugaenglich sind:

Host rzdspc*
  User 4winter
  ProxyCommand ssh 4winter@rzssh1.informatik.uni-hamburg.de /opt/bin/netcat %h %p 2> /dev/null

netcat ist allerdings meistens einfach als

netcat

oder

nc

ansprechbar. In Debian ist netcat im Paket

netcat-openbsd

enthalten.

Und nu:

teythoon@europa$ ssh rzdspc6
Last login: Sun Oct  7 14:05:16 2007 from rzdspc10.inform
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005

Willkommen auf der SUNW,Sun-Fire-V445 rzdspc6.informatik.uni-hamburg.de

Last cluster login: Sun Oct 7 14:03:05 on rzdspc6
rzdspc6$ 

Public-Key Authentifizierung

Vom Laptop im Netz des Informatikum anmelden, ohne jedesmal das Passwort eingeben zu müssen? Geht auch, und ist dabei trotzdem noch sicher! Auf dem eigenen Laptop muss zuerst ein Public/Private-Schlüsselpaar erstellt werden. Das funktioniert durch das Programm "ssh-keygen" und sieht dann etwa so aus:

olli@desktop:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/olli/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/olli/.ssh/id_rsa.
Your public key has been saved in /home/olli/.ssh/id_rsa.pub.
The key fingerprint is: bla bla
olli@desktop:~$

Man kann alle Abfragen einfach mit Enter bestätigen. Nun muss man dem Server, in diesem Fall rzssh1, nur noch eine Kopie des Schlüssels zukommen lassen. Das funktioniert vom Laptop aus über ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_rsa.pub 7bestman@rzssh1.informatik.uni-hamburg.de
Password: *passwort*
bla bla bla

der Parameter -i gibt hierbei den public-Schlüssel an... Falls man das Programm ssh-copy-id nicht hat, kann man den Vorgang auch per Hand durchführen. Man kopiert die Datei "~/.ssh/id_rsa.pub" vom Client, also da wo man sie erstellt hat, auf den Zielrechner, loggt sich dann an dem Zielrechner ein und kopiert den Inhalt ans Ende der Datei ~/.ssh/authorized_keys. "cat mein-key.pub >> ~/.ssh/authorized_keys" auf dem Server ausgeführt reicht dann.

expect

Expect ist ein kleines Programm, was einen Prozess startet und auf Ausgaben dieses Prozess wartet, um dann Eingaben an den Prozess zu senden. Nun kann man expect nutzen um ein einfaches "login"-Script für die UHH-Firewall zu schreiben, da dort Public-Key Authentifizierung nicht möglich ist.

Nachteil ist natürlich, dass das eigene Passwort im Klartext im Script zu finden ist. Wenn einen das nicht stört, dann kann man sich expect installieren und folgendes in eine Datei schreiben:

#!/usr/bin/expect -f

set host "10.1.1.10"
set user "3leet@inf"
set pass "geheimes-pw"

spawn ssh -l "$user" "$host"

expect {
    "Are you sure you want to continue connecting" {
        send "yes\n"
        exp_continue
    }
    "password:" {
        send "$pass\n"
        interact
    }
}

exit

nun einfach ausführbar machen und sich ganz fix ohne Passwortabfrage einloggen

chmod +x meine-datei
./meine-datei

Dateitransfer

Per Software wie FileZilla kann auch unter Windows und mit einer grafischen Oberfläche eine Verbindung mit dem eigenen Laufwerk am Informatikum hergestellt werden, um Dateien beispielsweise auf den eigenen Rechner zu Hause zu kopieren. Dafür gibt man folgendes ein: Server:sftp://rzssh1.informatik.uni-hamburg.de Benutzername: <Informatik-Kennung> Passwort: <eigenes Passwort> Port: <einfach freilassen>

Nützliche "Tricks"

Mit Hilfe des Port Forwadings kann man auch von Zuhause aus zb das Online Computer Library Center oder die ACM Digital Library durchstöbern:

ssh -L 2222:proxyuhh.uni-hamburg.de:3128 <username>@rzssh1.informatik.uni-hamburg.de -N

und dann im Browser als Proxy "localhost" mit Port 2222 eintragen. Nachdem man die Verbindung wieder getrennt hat natürlich nicht vergessen, die Proxyeinstellungen im Browser wieder zurückzusetzen.

Dieses Plugin macht es dem Firefox-User leichter, zwischen Proxies umzuschalten.


Unter Linux kann man auch so Verbindungen umleiten:

# iptables -t nat -I OUTPUT -d 134.100.9.77 -p tcp --dport 80 -j DNAT --to 127.0.0.1:1234

$ ssh -L1234:134.100.9.77:80 <username>@rzssh1.informatik.uni-hamburg.de

Ist zwar nicht sehr komfortabel, aber es funktioniert quasi immer; z. B. wenn man kein Proxy einstellen kann und Programme wie tsocks nicht funktionieren sollten.

Probleme

  • scp will nicht weil Leerzeichem im Pfad/ im Dateinamen sind:

den Pfad in Hochkomma ' setzen oder vor die Leerzeichen ein Backslash\.

Zwei äquivaltente Beispiele:

Beispiel#$ scp ~/Pfad/z\ u\ r/Datei/Filename\ mit\ Leerzeichen 4user@rzssh1:~/Zielpfad\ mit\ Leerzei\ chen/fuer/die/Datei/. 
Beispiel#$ scp '~/Pfad/z u r/Datei/Filename mit Leerzeichen' 4user@rzssh1:'~/Zielpfad mit Leerzei chen/fuer/die/Datei/.' 
  • das Kopieren vieler kleiner Dateien dauert ziemlich lange?

On-the-fly archivieren und entpacken hilft:

ssh <mein-host> 'tar -c /mein/ordner/mit/kleinen/dateien | gzip' | gzip -d | tar -xv

Mit dem Schalter -z Spart man sich die beiden gzip Kommandos.

ssh <mein-host> "tar -cz /mein/ordner/mit/kleinen/dateien" | tar -xzv

Ausserdem kann man bei tar noch das Zielverzeichnis angeben und eventuell eine schnellere Verschlüsselung für ssh benutzen. Bei langsamen Rechnern und hoher Bandbreite macht es Sinn, auf die Kompression zu verzichten.

ssh -c blowfish <mein-host> "tar -c /mein/ordner/mit/kleinen/dateien" | tar -xv -C /hier/hin/

Infrastruktur der Institute / Fachbereiche

Informatikum / iRZ

Am Informatikum gibt es die Knoten rzssh{1,2}.informatik.uni-hamburg.de, auf die man sich mit seiner Informatik-Kennung anmelden kann.

Für rechenaufwändige Anwendungen gibt es die ccblades ccblade{1,9}, auf die man sich per SSH von rzssh{1,2} anmelden kann, welche eine Woche im voraus über das iRZ reserviert werden können.

DKRZ

Am Deutschen Klimarechenzentrum gibt es den Login-Cluster cluster.wr.informatik.uni-hamburg.de, auf die man sich mit der Kennung anmelden kann, die man in seinem ersten Modul in der Arbeitsgruppe Wissenschaftliches Rechnen erhält, welche Cluster-Zugang erfordert.

Der Login-Cluster sollte nicht für rechenaufwändige Jobs / Benchmarks genutzt werden, dafür gibt es die Compute Nodes abu{1..5}, amd{2..4}, magny1, nehalem5, und west{1..10} mit jeweils unterschiedlicher Ausstattung. Bevor man sich allerdings auf einen Node einloggen kann, muss man ihn sich erst mit dem Batch-Queuing-System SLURM allozieren. Das geht für einen beliebigen Knoten der Partition "west" z.B. so:

$ salloc -p west
salloc: Granted job allocation 26477
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
             26477      west     bash felgenha  R       0:03      1 west2
$ ssh west2

Oder wenn man z.B. explizit west7 haben möchte:

$ salloc -p west -w west7
salloc: Granted job allocation 26479
$ ssh west7

ZBH

Das Zentrum für Bioinformatik hat auch einen Login-Node, welcher unter der Adresse bari.zbh.uni-hamburg.de zu erreichen ist, allerdings nur über Port 7373 (-p 7373 bei SSH, -P 7373 bei SCP, oder Zeile "Port" in der SSH-Config).

Von hier aus kann man sich unter anderem auf die Desktop-Rechner per SSH verbinden, welche die Namen von Seen (mondsee, chiemsee, ...), Inseln (ruegen, ...), oder ähnlichem tragen. Die Desktop-Rechner werden gleichzeitig als Teil eines Compute Clusters eingesetzt. Allerdings funktionieren die Kennungen von Studierenden, die lediglich Programmierung für Naturwissenschaften machen, meistens nur auf den Seen.

Da die meisten Studierenden auf bari kein home-Verzeichnis haben, erübrigt sich Public-Key-Authentifizierung. Man kann natürlich mit einem ProxyJump arbeiten, muss dann aber zweimal sein Passwort eingeben, oder man verwendet sshpass, muss dann aber im ZBH noch einmal sein Passwort eingeben, oder man verwendet ein expect-Skript, wodurch man zwar sein Passwort nicht mehr eingeben muss, aber auch keine mehr Dateien durch SSH pipen kann.

RRZ

TODO...

Ich habe mal etwas von Hummel gehört...

Physik / Physnet

In der Physik gibt es die Login-Nodes login{1..4}.physnet.uni-hamburg.de

Von dort kann man sich weiterverbinden auf die Nodes compile{1,2}, welche für Testen, Kompilieren, und kurze rechenintensive Arbeiten gedacht sind, und graphix{01,02}, welche wie compile{1,2} sind, aber mit GPUs.

Falls man allerdings in der Physik per SSH drucken möchte, muss man sich auf einen der studentischen Arbeitsrechner einloggen (falls einer gerade läuft), welche studix{01..26} heißen.