SSH-Zugang ins PSI

Eingehende SSH-Verbindungen zu Systemen innerhalb des PSI-Netzwerkes sind nur über ein Sprungsystem (hop.psi.ch) erlaubt.

PSI-Mitarbeiter mit einem Account können das Sprungsystem standardmässig nutzen. Nicht-PSI-Mitarbeiter müssen über ihre verantwortliche Kontaktperson einen Account für externe Mitarbeiter beantragen.
Für SSH Verbindungen von Unix-Systemen bieten sich unterschiedliche Lösungen an.

Variante 1
Für jede gewünschte SSH-Verbindung ins PSI-LAN erfolgt zuerst eine SSH-Verbindung auf hop.psi.ch. Von dort wird eine neue SSH-Verbindung zum Zielsystem im PSI-LAN aufgebaut.



Beispiel Verbindungsaufbau:
Bitte ersetzen sie <user> mit ihrem tatsächlichen Benutzernamen SSH auf hop.psi.ch $ ssh <user>@hop.psi.ch $ <user>@hop.psi.ch's password: und weiter zum System im PSI-LAN $ ssh <user>@sshserver.psi.ch $ <user>@sshserver.psi.ch's password: Alternatives Kommando: $ ssh -t <user>@hop.psi.ch ssh -t <user>@sshserver.psi.ch <user>@hop.psi.ch's password: <user>@sshserver.psi.ch's password: [<user>@sshserver ~]$

Variante 2
Wer oftmals mehrere SSH-Verbindungen zu unterschiedlichen Systemen im PSI-LAN aufbauen möchte, ist mit dieser Variante flexibler.


Sämtliche SSH-Verbindungen ins PSI-LAN erfolgen über einen SSH-Tunnel zu hop.psi.ch. Hierfür müssen auf dem Clientsystem Anpassungen vorgenommen werden.

Erstmals muss die ~/.ssh/config Datei bereits mit Octal 600 Berechtigungen existieren. mkdir ~/.ssh/tmp touch ~/.ssh/config chmod 600 ~/.ssh/config

SSH-Client-Konfigurations-Datei anpassen: ControlMaster auto ControlPath /home/<user>/.ssh/tmp/%h_%p_%r Protocol 2 # The following can also be specified in the host-based sections below. ForwardX11 yes ForwardX11Trusted yes ForwardAgent yes host hop hop.psi.ch hostname hop.psi.ch user <PSI-user> host sshsrv1-psi-internal hostname sshserver1.psi.ch user <user> ProxyCommand ssh -A -W %h:%p hop.psi.ch host sshsrv2-psi-internal hostname sshserver2.psi.ch user <user> ProxyCommand ssh -A -W %h:%p hop.psi.ch host sshsrv3-psi-internal hostname sshserver3.psi.ch user <user> ProxyCommand ssh -A -W %h:%p hop.psi.ch Der Verbindungsaufbau zu den internen Systemen erfolgt in zwei Schritten.

Schritt Nr. 1, SSH auf hop.psi.ch $ ssh <user>@hop.psi.ch $ <user>@hop.psi.ch's password: Diese Verbindung baut den Tunnel zu hop.psi.ch auf und muss für die Dauer der Verbindungen zu den Systemen im PSI-LAN unbedingt bestehen bleiben!

Schritt Nr. 2, SSH zu den SSH-Servern im PSI-LAN $ ssh sshsrv1-psi-internal $ <user>@sshserver1.psi.ch's password: $ ssh sshsrv2-psi-internal $ <user>@sshserver2.psi.ch's password: $ ssh sshsrv2-psi-internal $ <user>@sshserver3.psi.ch's password: Alle drei Verbindungen werden durch den Tunnel zu hop.psi.ch gesendet, und von dort weiter zu den Zielsystemen.
SSH Verbindungen von Windows Systemen sind nur in der oben beschriebenen Variante 1 möglich. D. h. für jede Verbindung ins PSI LAN muss zunächst eine Verbindung auf hop.psi.ch aufgebaut werden. Mit PuTTy lässt sich das mit wenig Aufwand umsetzen.

Beispiel: SSH Login auf llc.psi.ch

Zunächst trägt man in das Feld Host Name (or IP address) den Namen des Sprungsystems hop.psi.ch ein. Im Feld Saved Sessions trägt man den Namen der Verbindungsbeschreibung ein. In diesem Fall llc.psi.ch via hop.psi.ch.


Anschliessend wird in der linke Spalte die Category SSH angewählt. Dann trägt man in das Feld Remote command das Kommando ssh llc.psi.ch ein.


Dann springt man zurück zur Category Session und speichert die Einstellungen mit einem klick auf save ab.


Die Verbindung wird mit einem klick auf Open aufgebaut. Bitte ersetzen Sie <user> mit ihrem tatsächlichen Benutzernamen. Das Benutzerpasswort wird zweimal abgefragt. Einmal für das Login auf hop.psi.ch


und gleich im Anschluss für das Login auf llc.psi.ch

 


Nach der erfolgreichen Passworteingabe für llc.psi.ch, haben Sie Zugriff auf das System.

 



Bei der Abmeldung von llc.psi.ch werden beide Verbindungen (zu hop.psi.ch und llc.psi.ch) beendet.

Mit Hilfe von SSH-Tunneling können interne Serverdienste (Remote Desktop, VNC, SMB etc.) über das Sprungsystem hop.psi.ch genutzt werden. Hierbei ist zu beachten, dass nicht allen Benutzern des Sprungsystems die gleichen Möglichkeiten zur Verfügung stehen. Anhand der Art des Benutzeraccounts sind unterschiedliche Verbindungen über das Sprungsystem möglich. 

Bitte beachten Sie, dass nur ein Tunnel gleichzeitig erlaubt ist. Mehrere Tunnels führen zu einem Verbindungsabbruch. 



PSI-Mitarbeiter
PSI-Mitarbeiter können über hop.psi.ch die folgenden TCP-Verbindung ins PSI LAN tunneln:

TCP Port Nummer wird genutzt von
22 SSH
80/443 HTTP(S)
445 Windows File Server (z. B. fs00, fs01 or fs02)
>1023 bspw. für RDP, VNC etc.
Externe Benutzer
Externe Mitarbeiter können über hop.psi.ch die folgenden TCP-Verbindung ins PSI LAN tunneln:
TCP Port Nummer wird genutzt von
22 SSH
3389 RDP
5900 VNC
Auf Antrag können ggfs. weitere Verbindungen freigegeben werden.

Das Tunneling mit Windows erfolgt z. B. mit PuTTy. Zunächst trägt man in das Feld Host Name (or IP address) den Namen des Sprungsystems hop.psi.ch ein. Im Feld Saved Sessions trägt man den Namen der Verbindungsbeschreibung ein. In diesem Fall hop-tunnel.
 

 


Anschliessend wird in der linke Spalte die Category SSH -> Tunnels angewählt. Dann trägt man in das Feld Source port z. B. den lokalen Port 9000 und im Feld Destination das Zielssystem mit dem Port ein. In diesem Fall winterm3:3389, für eine RDP Verbindung zu winterm3.psi.ch. Nachdem die Angaben gemacht wurden fügt man sie mit einem Klick auf Add hinzu.
 

 



Dann springt man zurück zur Category Session und speichert die Einstellungen mit einem klick auf save ab. Nachdem die SSH-Verbindung zu hop.psi.ch aufgebaut wurde, startet man den RDP-Client und verbindet sich auf localhost:9000.

 


Die RDP-Verbindung wird dann durch den SSH-Tunnel zu hop.psi.ch gesendet, und von dort weiter zu winterm3.psi.ch im PSI-LAN.

 

Auch hier gibt es wieder verschiedene Varianten, die nachfolgend erläutert werden.

Variante 1, Kommandozeile

ssh -L 9000:winterm3.psi.ch:3389 <user>@hop.psi.ch $ <user>@hop.psi.ch's password:

Nach dem Login wurde auf dem lokalen Client Port 9000 geöffnet. Wenn man jetzt mit einem RDP-Client auf diesen Port eine Verbindung aufbaut, wird diese durch den Tunnel, über hop.psi.ch an winterm3.psi.ch weitergleitet. z. B. mit

$ rdesktop localhost:9000

Variante 2, Anpassen der .ssh/config
Bei Usern, die öfters verschiedene Verbindungen (RDP, SMB, etc.) zu Systemen im PSI-LAN aufbauen möchten, empfiehlt sich die Anpassung der SSH-Konfiguration auf dem Client.
 

 


SSH-Client-Konfigurations-Datei (siehe oben) anpassen:

 

~/.ssh/config ControlMaster auto ControlPath /home/<user>/.ssh/tmp/%h_%p_%r Protocol 2 # The following can also be specified in the host-based sections below. ForwardX11 yes ForwardX11Trusted yes ForwardAgent yes host hop.psi.ch hostname hop.psi.ch user <PSI-user> # Forward RDP to winterm3.psi.ch LocalForward 9000 winterm3.psi.ch:3389 # Forward RDP to pc8699.psi.ch LocalForward 9001 pc8699.psi.ch:3389 # Forward SMB to Fileserver fsX.psi.ch LocalForward 9445 fsX.psi.ch ...

Sobald die Verbindung zu hop.psi.ch aufgebaut wurde, stehen die lokalen Tunnelports 9000, 9001 und 9445 für die konfigurierten Verbindungen zur Verfügung.

Das Sprungsystem hop.psi.ch kann auch als Socks5-Proxy für dynamisches Tunneling verwendet werden. Damit lassen sich bspw. problemlos mehrere unterschiedliche internen Webserver kontaktieren, ohne das zu jedem ein separater Tunnel aufgebaut werden muss.

Beispiel Windows

Mit PuTTy wird einer vorhandenen Verbindungsbeschreibung zu hop.psi.ch das dynamische Tunneling hinzugefügt. Dafür wird in der linken Spalte die Category SSH -> Tunnels angewählt. Dann trägt man in das Feld Source port z. B. den lokalen Port 9999 ein, lässt das Feld Destination leer, und wählt die Option Dynamic an. Nachdem die Angaben gemacht wurden fügt man sie mit einem Klick auf Add hinzu.



Das Speichern der Verbindungsbeschreibung nicht vergessen. Nach dem eine SSH-Verbindung mit PuTTy zu hop.psi.ch aufgebaut wurde, steht auf dem lokalen Client der Port 9999 zur Verfügung. Jetzt kann man z. B. bei den Proxyeinstellungen des Firefox-Browsers bei SOCKS Host: localhost Port: 9999 eintragen. In das Feld No Proxy for: sollten zusätzlich alle Domainnamen eingetragen werden, die direkt, d. h. ohne den Umweg über hop.psi.ch abgerufen werden sollen, bspw. localhost, 127.0.0.1, .ethz.ch, .com

Achtung: Über hop.psi.ch können nur PSI-interne Webseiten abgerufen werden. Verbindungen zu PSI-externen Webseiten werden nicht weitergeleitet!!

 


Tipp Damit nicht jedes Mal die Konfiguration im Browser geändert werden muss, empfiehlt es sich bspw. auf einem Notebook zwei Browser zu verwenden. Z. B. Firefox für Zugriffe von ausserhalb des PSI via hop.psi.ch. Und den InternetExplorer für Zugriffe innerhalb des PSI ohne einer Verbindung über hop.psi.ch.

Beispiel Unix

Variante 1, Kommandozeile

 

ssh -D 9999 <user>@hop.psi.ch $ <user>@hop.psi.ch's password:

Nach dem Login wurde auf dem lokalen Client Port 9999 geöffnet. Diesen Port kann man nun als Socks-Proxy verwenden. Siehe Beschreibung Windows.

Variante 2, Anpassen der .ssh/config
Für die Anpassung der SSH-Client-Konfiguration muss die Zeile

DynamicForward 9999

eingefügt werden.

SSH-Client-Konfigurations-Datei (siehe oben) anpassen:

~/.ssh/config ControlMaster auto ControlPath /home/<user>/.ssh/tmp/%h_%p_%r Protocol 2 # The following can also be specified in the host-based sections below. ForwardX11 yes ForwardX11Trusted yes ForwardAgent yes host hop.psi.ch hostname hop.psi.ch user <PSI-user> DynamicForward 9999 # Forward RDP to winterm3.psi.ch LocalForward 9000 winterm3.psi.ch:3389 # Forward RDP to pc8699.psi.ch LocalForward 9001 pc8699.psi.ch:3389 # Forward SMB to Fileserver fsX.psi.ch LocalForward 9445 fsX.psi.ch ...

Sobald die Verbindung zu hop.psi.ch aufgebaut wurde, steht der lokale Tunnelport 9999 für das dynamische Tunneling zur Verfügung.

Hinweis für Mac-OSX User
Wenn man interne Webseiten mit Hilfe des Safari-Browsers aufrufen möchte, muss die Socks-Proxy-Nutzung über die Netzwerkeigenschaften aktiviert werden. In den Netzwerkeigenschaften kann bei der entsprechenden Netzwerkverbindung unter Advanced -> Proxies die Verwendung des Socks-Proxys auf Port 9999 aktiviert und eingestellt werden.

Achtung: Die Einstellungen sind global für alle Anwendungen des Mac-Systems, die die Netzwerkeigenschaften nutzen, gültig. Dazu zählen bspw. auch die Anwendungen Mail und Calendar. D. h. sämtliche Netzwerkverbindungen dieser Anwendungen erfolgen dann ebenfalls über den Socks-Proxy. Dies führt dann zu Verbindungsproblemen, wenn Server ausserhalb des PSI kontaktiert werden. Um das zu vermeiden, müssen die Server von der Proxynutzung mittels eines Eintrages im Feld Bypass proxy settings for these Hosts & Domains: ausgeschlossen werden.
Gelegentlich wird ein Zielsystem innerhalb des PSI-LANs den Benutzer darauf aufmerksam machen, dass sich der SSH-Hostkey geändert hat: [user@hop ~]$ ssh user@targethost @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is 6e:45:f9:d8:af:33:3d:a1:a5:c7:76:1d:02:f8:77:00. Please contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Offending RSA key in /home/user/known_hosts:4 RSA host key for targethost has changed and you have requested strict checking. Host key verification failed. Diese Fehlermeldung bedeutet meistens (abgesehen von einer echten Systemkompromittierung), dass sich der SSH-Hostkey des Zielsystems aus den folgenden zwei Gründen geändert hat:
  1. Das Zielsystem wurde neu installiert (deshalb wurde der SSH-Hostkey neu erzeugt)
  2. Der Verantwoertliche des Zielsystems hat absichtlich einen neuen SSH-Hostkey erzeugt.
In beiden Fällen muss der neue SSH-Hostkey wieder akzeptiert werden. Dafuer wird das kd Tool ("key delete") zur Verfügung gestellt. [user@hop]$ kd usage: kd [host or IP] This program will delete a host key from your ~/.ssh/known_hosts. You should use this program when a destination host has been rebuilt, or the host SSH key on that system has been regenerated. Example usage: [user@hop]$ kd mybox # Host mybox found: line 2 type ECDSA /home/user/.ssh/known_hosts updated. Original contents retained as /home/user/.ssh/known_hosts.old [user@hop]$ *NOTE* You are required to accept the host's SSH key again on the next connection! Please bear this in mind when executing your next tunnel to the destination host! [user@hop]$

Um kd zu verwenden, muss man entweder den Hostname oder die IP Adresse eingeben:

1. Loeschen eines SSH-Hostkeys [user@hop]$ kd targethost # Host targethost found: line 4 /home/user/.ssh/known_hosts updated. Original contents retained as /home/user/.ssh/known_hosts.old

2. Zum Zielsystem verbinden, und den neuen SSH-Hostkey akzeptieren [user@hop]$ ssh targethost The authenticity of host 'targethost (129.129.123.123)' can't be established. ECDSA key fingerprint is f5:64:8e:a4:f1:6f:dc:c3:57:01:e6:e8:ec:ae:95:ff. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'targethost,129.129.123.123' (ECDSA) to the list of known hosts. user@targethost's password: [user@hop]$