SSH-Zugang ins PSI (NG)

Zur weiteren Verbesserung der IT Sicherheit der Remotezugänge wird im Laufe des Jahres 2024 das bestehende SSH-Sprungsystem (hop.psi.ch) durch eine neuere Version ersetzt. Durch die neue Version werden sich einige Änderungen in der Funktionalität und der Anwendung des Systems ergeben.

Bitte machen Sie sich VOR der ersten Nutzung des neuen Systems mit den Änderungen vertraut.

Allgemeine Information zur Nutzung

Das neue System wird ausschliesslich als Tunneling-System zur Verfügung stehen. Dies bedeutet, dass nach dem erfolgreichen Login in das System

  • KEINE aktive, nutzbare Shell zur Verfügung steht
  • die bekannten Kommandos "ssh, kd, host" ersatzlos wegfallen
  • kein weiterspringen per SSH möglich ist, bspw. mit [user@hop]$ ssh user@login.psi.ch

Hinweis:

Die veraltete SSH-Tunneling-Variante (Beispiel), 

ssh -L 9999:localhost:9999 hopx.psi.ch ssh -L 9999:localhost:22 -N psi-internes-system.psi.ch

bei der auf hopx.psi.ch ein lokaler Port geöffnet werden soll, wird durch den Wegfall einer nutzbaren Shell und des Kommandos "ssh" ebenfalls nicht mehr weiter unterstützt. 

Pro Benutzer ist nur eine aktive Verbindung zu hopx.psi.ch möglich, über die alle weiteren Verbindungen ins PSI LAN getunnelt werden müssen (Stichwort: ProxyJump, ProxyCommand, SSH-Multiplexing).

Die Nutzung des neuen Hop-Systems basiert in den meisten Anwendungsfällen auf dem so genannten SSH-Multiplexing. Dabei werden SSH-Verbindungen durch eine bereits bestehende SSH-Verbindung (Tunnel) gesendet, was effizienter und schneller ist als separate Verbindungen.

Angewendet auf  das Hop-System bedeutet dies:

1. Eine SSH-Verbindung zu hopx.psi.ch aufbauen und diese Verbindung offen halten (ganz wichtig!!).

2. Im nächsten Schritt  kann dann in einer weiteren Shell oder einem  weiteren Terminal eine neue SSH-Verbindung durch die Verbindung zu hopx.psi.ch (Schritt Nr. 1) zu einem internen System aufgebaut werden.  Dies kann beliebig oft wiederholt werden. D. h. es ist möglich mehrere SSH-Verbindungen durch die SSH-Verbindung zu hopx.psi.ch zu senden, solange diese weiterhin besteht.

Hinweis: Schritt 1 und Schritt 2 müssen getrennt erfolgen und dürfen nicht in einem einzelnen Kommando zusammengefasst werden!

********* Achtung ****************

Wird die Verbindung zu hopx.psi.ch beendet, während die Verbindung(en) zu einem internen System noch aktiv/offen sind,  dann werden mit der Beendigung der Verbindung zu hopx.psi.ch auch alle anderen Verbindungen ebenfalls beendet!!!

*********************************

Die nachfolgende Abbildung zeigt die Ausgabe nach dem erfolgreichen Login. 

Die Ausgabe nach dem Login enthält die folgenden wichtigen Informationen: 

  1. Die IP-Adresse des Clients mit der die Verbindung zu hopx.psi.ch aufgebaut wurde. 
  2. Der Benutzername, mit der die Verbindung aufgebaut wurde. 
  3. Die NAT-IP-Adresse, mit der die vom Benutzer durch hopx.psi.ch aufgebauten Verbindungen zu Systemen innerhalb des PSI-Netzwerkes erscheinen. 
  4. Das Datum und die Uhrzeit wann die Verbindung zu hopx.psi.ch gestartet wurde
  5. Das Datum und die Uhrzeit bis wann die Verbindung zu hopx.psi.ch maximal bestehen bleiben kann. Zu dieser Uhrzeit (nach Ablauf der maximalen Sessiondauer von 12h) wird die Verbindung zu hopx.psi.ch automatisch getrennt. Alle durch hopx.psi.ch aufgebauten Verbindungen ins PSI-Netzwerk werden ebenfalls unterbrochen. 

Die Verbindung zu hopx.psi.ch  kann  mit "ctrl-c".   beendet werden. Es stehen keine weiteren Kommandos zur Verfügung!

Wie bereits oben erwähnt, muss für diese Vorgehensweise das SSH-Multiplexing einmalig auf dem Client aktiviert werden (siehe unten). 

Verhalten beim Aufbau von mehr als einer Verbindung

Erfolgt der Aufbau einer zweiten Verbindung zu hopx.psi.ch unter der Verwendung des gleichen Benutzernamens und der gleichen Source-IP-Adresse, dann wird diese Verbindung nach der erfolgreichen Authentisierung mit dem Hinweis auf die bereits bestehende Verbindung getrennt. 

Erfolgt der Aufbau einer zweiten Verbindung zu hopx.psi.ch unter der Verwendung des gleichen Benutzernamens aber einer anderen Source-IP-Adresse als bei der bereits bestehenden Verbindung, dann wird der Benutzer nach der erfolgreichen Authentisierung vor die Wahl gestellt. Er kann die zweite Verbindung tatsächlich aufbauen, dann wird jedoch die erste Verbindung und alle dazugehörigen getunnelten Verbindungen ins PSI-Netzwerk getrennt. Oder er kann die zweite Verbindung beenden und mit der ersten weiterarbeiten. Die Antwort auf die Frage ist mit 'Y' , 'y' , 'N' oder 'n' zu beantworten. 

Maximale Sessiondauer von 12 Stunden

Die Dauer der aktiven Verbindung zu hopx.psi.ch wird analog zum VPN-Zugang auf maximal 12 Stunden beschränkt. Bis wann die Verbindung maximal bestehen bleiben kann, wird nach der erfolgreichen Authentisierung angezeigt (siehe oben). Im gleichen Fenster erfolgt fünf Minuten bevor die Verbindung getrennt wird ein Hinweis auf die bevorstehende Beendigung der Verbindung.

********* Achtung ****************

Wird die Verbindung zu hopx.psi.ch beendet, während die Verbindung(en) zu einem internen System noch aktiv/offen sind,  dann werden mit der Beendigung der Verbindung zu hopx.psi.ch auch alle anderen Verbindungen ebenfalls beendet!!!

*********************************

Hinweis zur Verwendung von VS Code

Das Remote SSH Plugin von VS Code versucht durch die Standardeinstellungen mehrfach eine unterbrochene SSH-Verbindung wieder aufzubauen. War ein Benutzer mit mehreren Systemen von remote via SSH verbunden und die Verbindungen wurden unterbrochen, dann versucht VS Code  jede Verbindung automatisch wieder herzustellen. Dieses Verhalten kann auf hopx.psi.ch zu vielen fehlgeschlagenen Loginversuchen und im Extremfall zu einer automatisierten Blockade des Benutzeraccounts oder der Client-IP-Adresse führen.  

Um dies zu verhindern muss man die Anzahl der automatisieren Verbindungsversuche im VS Code deutlich reduzieren.

Hierfür muss “Max Reconnection Attempts” auf 0 gesetzt werden:

SSH-Multiplexing auf Unix/Linux/macOS aktivieren

Falls die Datei ~/.ssh/config noch nicht existiert muss sie angelegt werden.

$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config

dann mit einem beliebigen Editor  die Datei ~/.ssh/config editieren und mit folgendem Inhalt versehen

$ cat .ssh/config 
Host *.psi.ch    
ControlMaster auto    
ControlPath ~/.ssh/tmp/%h_%p_%r
 

Dann muss noch das Verzeichnis für den "ControlPath" angelegt werden (ebenfalls einmalig)

$ mkdir ~/.ssh/tmp
$ chmod 700 ~/.ssh/tmp
 

Das System ist jetzt bereit für die Nutzung von SSH-Multiplexing.

Weitere interessante Infos zum Thema SSH-Multiplexing sind hier zu finden:

https://www.cyberciti.biz/faq/linux-unix-reuse-openssh-connection/

SSH-Verbindungen zu PSI internen Systemen mit Unix/Linux/macOS

Nach dem das SSH-Multiplexing eingerichtet wurde können SSH-Verbindungen via Hopx zu Systemen innerhalb des PSI-Netzwerkes aufgebaut werden. Dazu benötigt es mindestens zwei Schritte

  1. SSH-Verbindung zu hopx.psi.ch aufbauen und geöffnet lassen
  2. In einem neuen Teminal eine SSH-Verbindung via hopx.psi.ch zum internen System aufbauen
Schritt Nr. 1 SSH-Verbindung zu hopx.psi.ch aufbauen. Schritt Nr. 2 SSH-Verbindung zu PSI-internen System(en) aufbauen

Beispiel:

Schritt Nr. 1:

$ ssh <user>@hopx.psi.ch

Dann empfiehlt es sich ein neues Terminal zu öffnen und die SSH-Verbindung für Schritt Nr. 2 zu starten

Schritt Nr. 2:

$ ssh -J <user>@hopx.psi.ch <user>@internes-system.psi.ch

Mit der Option “-J <user>@hopx.psi.ch" wird dem SSH-Client mitgeteilt, dass die Verbindung zum Server "internes-system.psi.ch" durch die bereits bestehende Verbindung von Schritt Nr. 1 zu hopx.psi.ch erfolgen soll. Dies funktioniert nur wenn

  • zuvor wie oben beschrieben das SSH-Multiplexing eingerichtet wurde!
  • bei der Option -J der Hostname  von Hopx exakt wie bei Schritt Nr. 1 angegeben wird, also hopx.psi.ch 

Hinweis: Schritt 1 und Schritt 2 müssen getrennt erfolgen und dürfen nicht in einem einzelnen Kommando zusammengefasst werden!

Solange die Verbindung aus Schritt Nr. 1 zu hopx.psi.ch offen ist können beliebig weitere Verbindungen zum gleichen oder zu anderen internen Systemen aufgebaut werden. Bspw. mit

Schritt Nr. 3, 4....

$ ssh -J <user>@hopx.psi.ch <user>@weiteres-internes-system.psi.ch

 

SSH-Verbindungen zu PSI internen Systemen mit Unix/Linux/macOS mit gleichzeitiger Port-Weiterleitung über das interne System (Beispiel RDP zu winterm4.psi.ch)

Die oben beschriebene SSH-Verbindung zu einem internen System kann um eine oder mehrere Port-Weiterleitung erweitert werden. Dafür wird auf dem Clientsystem ein lokaler Port geöffnet. Verbindungen auf diesen Port werden durch den SSH-Tunnel zum internen System gesendet, und dann an das eigentliche Zielsystem geschickt. Hierfür werden drei Schritte benötigt:

  1. SSH-Verbindung zu hopx.psi.ch aufbauen und geöffnet lassen
  2. SSH-Verbindung via hopx.psi.ch zum internen System aufbauen, mit Port-Weiterleitung
  3. Nutzung der Port-Weiterleitung 
Schritt Nr. 1 SSH-Verbindung zu hopx.psi.ch aufbauen. Schritt Nr. 2 SSH-Verbindung zu PSI-internem System aufbauen. Schritt Nr. 3 die Port-Weiterleitung nutzen.

Beispiel:

Schritt Nr. 1:

$ ssh <user>@hopx.psi.ch

Dann empfiehlt es sich ein neues Terminal zu öffnen und die SSH-Verbindung für Schritt Nr. 2 zu starten

Schritt Nr. 2:

$ ssh -L 8888:winterm4.psi.ch:3389 -J <user>@hopx.psi.ch <user>@internes-system.psi.ch

Mit der Option "-L 8888:winterm4.psi.ch:3389" wird auf dem SSH-Client-System lokal der Port 8888 geöffnet. 

Hinweis: Schritt 1 und Schritt 2 müssen getrennt erfolgen und dürfen nicht in einem einzelnen Kommando zusammengefasst werden!

Schritt Nr. 3

Startet man dann den RDP-Client und verbindet sich mit "localhost:8888" oder "127.0.0.1:8888" erreicht man das Loginprompt von winterm4.psi.ch.

Falls man weitere Port-Weiterleitungen benötigt, können diese schon bei der Verbindung von Schritt Nr. 2 angegeben werden. Die Option "-L" kann mehrfach angegeben werden, bspw.:

ssh -L 8888:winterm4.psi.ch:3389 -L 5900:vnc-int.psi.ch:5900 -J <user>@hopx.psi.ch <user>@internes-system.psi.ch

Bei diesem Beispiel wird zusätzlich der lokale Port 5900 zum Port 5900 des Systems vnc-int.psi.ch weitergeleitet.

 

SSH-Verbindungen zu PSI internen Systemen Unix/Linux/macOS durch ein weiteres internes Gateway-System mit gleichzeitiger Port-Weiterleitung über das interne System 

Die Beispiele oben können um ein weiteres "Sprungsystem", z. B. ein weiteres internes SSH-Gateway, erweitert werden.  D. h. vom externen SSH-Client bis zum Zielsystem, dem internen SSH-Server, erfolgt die Verbindung über hopx.psi.ch und dann einem weiteren SSH-Gateway. Auch hierfür werden vier Schritte benötigt:

  1. SSH-Verbindung zu hopx.psi.ch aufbauen und geöffnet lassen
  2. SSH-Verbindung via hopx.psi.ch und dem internen SSH-Gateway zum internen System aufbauen, mit Port-Weiterleitung
  3. zusammen mit Schritt Nr. 2
  4. Portweiterleitung nutzen

 

Schritt Nr. 1 SSH-Verbindung zu hopx.psi.ch aufbauen. Schritt Nr. 2 + 3 SSH-Verbindung zu PSI-internem System via (hopx + Gatway) aufbauen. Schritt Nr. 4 die Port-Weiterleitung nutzen.

Beispiel:

Schritt Nr. 1:

$ ssh <user>@hopx.psi.ch

Dann empfiehlt es sich ein neues Terminal zu öffnen und die SSH-Verbindung von Schritt Nr. 2 zu starten

Schritt Nr. 2 + 3:

$ ssh -L 8888:rdp.psi.ch:3389 -L 5900:vnc.psi.ch:5900 -J <user>@hopx.psi.ch,<user>@int-ssh-gateway.psi.ch <user>@internes-system.psi.ch

Zuerst erfolgt die Authentisierung am System "int-ssh-gateway.psi.ch" und dann am System "internes-system.psi.ch". Die lokalen Port-Weiterleitungen auf dem SSH-Client terminieren auf dem System "internes-system.psi.ch". Von dort aus werden sie zu den Zielsystemen (rdp.psi.ch + vnc.psi.ch) weitergeleitet.

Hinweis: Schritt 1 und Schritt 2 müssen getrennt erfolgen und dürfen nicht in einem einzelnen Kommando zusammengefasst werden!

Schritt Nr. 4

Startet man dann den RDP-Client und verbindet sich mit "localhost:8888" oder "127.0.0.1:8888" erreicht man das Loginprompt von rdp.psi.ch.

SSH Port-Weiterleitung via hopx.psi.ch mit Unix/Linux/macOS

Die Beispiele oben nutzen hopx.psi.ch jeweils als Gateway-System (-J) und die Port-Weiterleitung erfolgt über ein System im internen PSI-Netzwerk. Generell kann jedoch auch nur über hopx.psi.ch ein oder mehrere Ports weitergeleitet werden, ohne die Beteiligung eines internen Systems. Die Gründe dafür können z. B. sein:

  • der Benutzer hat keine Rechte sich per SSH auf einem internen System anzumelden
  • der Benutzer hat auf seinem Clientsystem kein Multiplexing eingerichtet oder möchte das generell nicht einrichten.
  • der Benutzer möchte nur einen schnellen Zugriff auf ein internes System, ohne dafür zwei SSH-Verbindungen (eine zu hopx.psi.ch und eine zu einem internen System) aufzubauen

In diesen Fällen wird nur eine SSH-Verbindung zu hopx.psi.ch benötigt.

Schritt Nr. 1 SSH-Verbindung zu hopx.psi.ch aufbauen und die Port-Weiterleitungen aktivieren. Schritt Nr. 2 die Port-Weiterleitung nutzen.

Beispiel

$ ssh -L 8000:winterm4.psi.ch:3389 <user>@hopx.psi.ch

tunnelt bspw. den lokalen Port 8000 zu Port 3389 (RDP) des Terminalservers winterm4.psi.ch

oder bei einem mehrfachen Port-Forwarding

$ ssh -L 8000:winterm4.psi.ch:3389 -L 8445:fileserver.psi.ch:445 <user>@hopx.psi.ch

wird zusätzlich der lokale Port 8445 zu Port 445 von fileserver.psi.ch getunnelt, über den dann ein Datentransfer durchgeführt werden kann. 

 

SSH und die Nutzung der config-Datei

Für einen schnellen Zugriff sind die oben dargestellten Kommandos sicherlich gut. Wer aber regelmässig und oftmals die gleichen Port-Weiterleitungen nutzen möchte, für den ist die Nutzung der config-Datei eine erhebliche Erleichterung.

Die Datei wurde bereits zuvor zur Aktivierung des SSH-Multiplexings editiert (siehe oben).  Zu finden ist sie im .ssh Verzeichnis im Homeverzeichnis des jeweiligen Benutzers.

Hinweis:

Bei der Verwendung der unten beschriebenen Beispiel config-Datei löschen Sie bitte die Zeile

Host *.psi.ch

die während der Aktivierung des SSH-Multiplexings eingefügt wurde.

 

Der neue Inhalt der config-Datei könnte dann wie folgt aussehen:

$ cat ~/.ssh/config 
 
ControlMaster auto 
ControlPath ~/.ssh/tmp/%h_%p_%r 
ForwardAgent yes 
ForwardX11 yes 
ForwardX11Trusted yes 
host hopx.psi.ch psi-outside-ssh-gw 
           hostname hopx.psi.ch 
 
host internes-system.psi.ch 
           hostname internes-system.psi.ch 
           DynamicForward 9000 
           LocalForward 8389 winterm4.psi.ch:3389 
           LocalForward 8445 fileserver.psi.ch:445 
 
# for use with macOS 
match host *.psi.ch !host hop*.psi.ch !exec "ifconfig -a inet | grep -q -E 'inet 129\.129\.'" 
          ProxyJump psi-outside-ssh-gw 
 
# for use with Linux 
#match host *.psi.ch !host hop*.psi.ch !exec "ip -o -4 a | grep -v -E 'lo *inet' | grep -q -E 'inet 129\.129\.'"
#          ProxyJump psi-outside-ssh-gw 

 

Auch hier müssen wieder zwei Verbindungen aufgebaut werden:

  1. SSH-Verbindung zu hopx.psi.ch aufbauen und geöffnet lassen
  2. SSH-Verbindung zu internes-system.psi.ch aufbauen und geöffnet lassen
Mit der SSH-Verbindung zu "internes-system.psi.ch" werden auf dem SSH-Client drei lokale Ports geöffnet. Port 9000 für "dynamische Weiterleitungen/Socks-Proxy (siehe unten)", Port 8389 zu winterm4.psi.ch und Port 8445 zu fileserver.psi.ch 

 

Vorraussetzungen

Um mit Putty das neue Hopx-System vollumfänglich nutzen zu können, empfiehlt es sich mindestens die Version 0.78 von Putty zu verwenden. Ab dieser Version wird das so genannte "Connection Sharing", was dem oben erläuterten SSH Multiplexing entspricht, unterstützt. 

Hinweis:

Mit Putty-Versionen kleiner als 0.78 kann das neue Hopx-System nur für Port-Weiterleitungen über hopx.psi.ch selbst genutzt werden. SSH-Verbindungen zu internen Systemen über eine bereits bestehende Verbindung zu hopx.psi.ch sind mit einer Putty-Version kleiner als 0.78 nicht möglich!

Vorbereiten von Putty für die Nutzung von hopx.psi.ch

<Dieser Schritt entfällt wenn man mit Putty lediglich eine SSH Port-Weiterleitung via hopx.psi.ch nutzen möchte>

Putty muss zunächst für die Nutzung mit hopx.psi.ch vorbereitet werden, damit die unten erläuterten Konfigurationen funktionieren.

Als erstes muss ein Verbindungsprofil für hopx.psi.ch erstellt werden. 

In der linken Spalte "Category" den oberen Eintrag "Session" anwählen und rechts im Feld "Host Name (or IP adress)

<user>@hopx.psi.ch

eintragen (<user> bitte mit dem tatsächlichen Benutzernamen ersetzen)

Im Feld "Saved Session" ein Name für dieses Profil eintragen. In dem Fall "hopx.psi.ch" (noch nicht auf "Save" klicken)

Dann muss  in der linken Spalte "Category" der Eintrag "Connection -> SSH" angewählt, und unter "Sharing an SSH connection between PuTTY tools" ein Haken bei "Share SSH connections if possible" gesetzt werden.

Jetzt müssen die Einstellungen abgespeichert werden. In der linken Spalte "Category" den oberen Eintrag "Session" anwählen und rechts auf "Save" klicken.

Die Grundkonfiguration für die Verbindung zu hopx.psi.ch ist nun erstellt und betriebsbereit. 

SSH-Verbindungen zu PSI internen Systemen mit Windows + Putty mit gleichzeitiger Port-Weiterleitung über das interne System (Beispiel RDP zu winterm4.psi.ch)

Ähnlich wie unter Unix, können mit Putty SSH-Verbindungen via Hopx zu Systemen innerhalb des PSI-Netzwerkes aufgebaut werden. Eine Port-Weiterleitung ist dafür nicht zwingend notwendig, wird aber in diesem Beispiel ebenfalls erläutert. Falls eine Port-Weiterleitung nicht benötigt wird, kann die entsprechende Konfiguration weggelassen werden. 

Für eine SSH-Verbindung via hopx.psi.ch mit Putty werden die folgenden Schritte benötigt

  1. Mit Putty eine SSH-Verbindung zu hopx.psi.ch aufbauen und geöffnet lassen (Konfiguration siehe oben)
  2. Mit Putty eine neue SSH-Verbindung via hopx.psi.ch zum internen System aufbauen
  3. Nutzung der Port-Weiterleitung
Schritt Nr. 1 SSH-Verbindung zu hopx.psi.ch aufbauen. Schritt Nr. 2 SSH-Verbindung zu PSI-internem System aufbauen. Schritt Nr. 3 die Port-Weiterleitung nutzen.

Die Vorbereitung für die Verbindung zu hopx.psi.ch ist bereits mit der Konfiguration oben erfolgt. Für die Verbindung zum internen System (bspw. zu login.psi.ch) muss wie folgt vorgegangen werden: 

In der linken Spalte "Category" den oberen Eintrag "Session" anwählen und rechts im Feld "Host Name (or IP adress)

<user>@login.psi.ch

eintragen (<user> bitte mit dem tatsächlichen Benutzernamen ersetzen)

Im Feld "Saved Session" ein Name für dieses Profil eintragen. In dem Fall "login-via-hopx" (noch nicht auf "Save" klicken)

Damit die Verbindung zu login.psi.ch über hopx.psi.ch erfolgt muss dann in der linken Spalte "Category" der Eintrag  "Proxy" ausgewählt werden.  Im Rechten Teil des Putty-Fensters muss "Proxy type" auf  "SSH to proxy and use port forwarding" gesetzt sein. In das Feld "Proxy hostname" muss "hopx.psi.ch" und in das Feld "Port" muss "22" eingetragen werden. 

In der Zeile "Do DNS name lookup at proxy end" muss von "Auto" auf "Yes" umgestellt werden. 

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" ein und das  Feld "Destination" bleibt leer. Der Typ wird auf "Dynamic" (für das dynamische Tunneling, siehe unten) gesetzt und anschliessend auf "Add" geklickt. 

Dann trägt man in das Feld "Source port" z. B. den lokalen Port "8389" ein und in das Feld "Destination" den Zielserver und den entprechenden Port "winterm4.psi.ch:3389". Der Typ wird auf "Local" gesetzt und anschliessend auf "Add" geklickt. Durch dieses Setting werden RDP-Verbindungen auf den lokalen Port 8389 zu winterm4.psi.ch Port 3389 geleitet.

Nach der vollständigen Tunnel Konfiguration sieht das dann wie folgt aus. 

Dann springt man zurück zu "Category -> Session" und speichert die Einstellungen mit einem klick auf "Save" ab. 

Im Anschluss können die o. g. drei Schritte angewendet werden. 

 

Schritt Nr. 1, SSH-Verbindung zu hopx.psi.ch aufbauen und geöffnet lassen

Man wählt die gespeicherte Verbindung "hopx.psi.ch" aus, klickt auf "Load"und anschliessend auf "Open". Sobald die Verbindung zu hopx.psi.ch nach der erfolgreichen Authentisierung steht erfolgt Schritt Nr. 2

 

Schritt Nr. 2, SSH-Verbindung via hopx.psi.ch zum internen System (login.psi.ch) aufbauen, mit Port-Weiterleitung

Man ruft Putty erneut auf und wählt die gespeicherte Verbindung "login-via-hopx" aus, klickt auf "Load" und anschliessend auf "Open".  Sobald die Verbindung zu login.psi.ch steht erfolgt Schritt Nr. 3

 

Schritt Nr. 3, Nutzung der Port-Weiterleitung

Startet man dann den RDP-Client und verbindet sich mit "localhost:8389" oder "127.0.0.1:8389" erreicht man das Loginprompt von winterm4.psi.ch.

SSH Port-Weiterleitung via hopx.psi.ch mit Windows + Putty

Das Beispiel oben nutzt hopx.psi.ch als Gateway-System und die Port-Weiterleitung erfolgt über ein System im internen PSI-Netzwerk. Generell kann jedoch auch nur über hopx.psi.ch ein oder mehrere Ports weitergeleitet werden, ohne die Beteiligung eines internen Systems. Die Gründe dafür können z. B. sein:

  • der Benutzer hat keine Rechte sich per SSH auf einem internen System anzumelden
  • der Benutzer hat auf seinem Clientsystem in Putty kein "Connection Sharing" eingerichtet oder möchte das generell nicht einrichten.
  • der Benutzer hat auf seinem Clientsystem eine Putty Version niedriger als 0.78 installiert. Eine Installation der Version ab 0.78 ist nicht möglich oder gewollt. 
  • der Benutzer möchte nur einen schnellen Zugriff auf ein internes System, ohne dafür zwei SSH-Verbindungen (eine zu hopx.psi.ch und eine zu einem internen System) aufzubauen

In diesen Fällen wird nur eine SSH-Verbindung zu hopx.psi.ch benötigt, um anschliessend die Port-Weiterleitung zu nutzen.

Schritt Nr. 1 SSH-Verbindung zu hopx.psi.ch aufbauen und die Port-Weiterleitungen aktivieren. Schritt Nr. 2 die Port-Weiterleitung nutzen.

Für die Konfiguration wird wie folgt vorgegangen. 

Putty starten und in der linken Spalte "Category" den oberen Eintrag "Session" anwählen, rechts im Feld "Host Name (or IP adress)

<user>@hopx.psi.ch

eintragen (<user> bitte mit dem tatsächlichen Benutzernamen ersetzen)

Im Feld "Saved Session" ein Name für dieses Profil eintragen. In dem Fall "hopx.psi.ch" (noch nicht auf "Save" klicken)

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" ein und das  Feld "Destination" bleibt leer. Der Typ wird auf "Dynamic" (für das dynamische Tunneling, siehe unten) gesetzt und anschliessend auf "Add" geklickt. 

Dann trägt man in das Feld "Source port" z. B. den lokalen Port "8389" ein und in das Feld "Destination" den Zielserver und den entsprechenden Port "winterm4.psi.ch:3389". Der Typ wird auf "Local" gesetzt und anschliessend auf "Add" geklickt. Durch dieses Setting werden RDP-Verbindungen auf den lokalen Port 8389 zu winterm4.psi.ch Port 3389 geleitet.

Nach der vollständigen Tunnel Konfiguration sieht das dann wie folgt aus. 

Dann springt man zurück zu "Category -> Session" und speichert die Einstellungen mit einem klick auf "Save" ab. 

Im Anschluss  sind für den Gebrauch die folgenden Schritte notwendig

 

Schritt Nr. 1, SSH-Verbindung zu hopx.psi.ch aufbauen und geöffnet lassen

Man wählt die gespeicherte Verbindung "hopx.psi.ch" aus, klickt auf "Load"und anschliessend auf "Open". Sobald die Verbindung zu hopx.psi.ch nach der erfolgreichen Authentisierung steht erfolgt Schritt Nr. 2

 

Schritt Nr. 2, Nutzung der Port-Weiterleitung

Startet man dann den RDP-Client und verbindet sich mit "localhost:8389" oder "127.0.0.1:8389" erreicht man das Loginprompt von winterm4.psi.ch.

Beim Dynamischen Tunneling wird hopx.psi.ch oder ein System im internen PSI-Netzwerk als Socks5-Proxy verwendet. Damit lassen sich bspw. mehrere unterschiedliche interne Webserver/Webseiten kontaktieren, ohne das zu jedem ein separater Tunnel bzw. eine Port-Weiterleitung aufgebaut werden muss. 

 

Dynamisches Tunneling mit Unix/Linux/macOS

Damit lokal auf dem System ein Port für das dynamische Tunneling geöffnet wird, kann man unter Unix/Linux/macOS die Kommandozeilenoption "-D" angeben.

Tunneling direkt via hopx.psi.ch 

$ ssh -D 9000 -J <user>@hopx.psi.ch

...öffnet auf dem Clientsystem lokal den Port 9000. Verbindungen darauf werden durch die SSH-Verbindung zu hopx.psi.ch gesendet, und von dort zum internen Server.

Tunneling über ein internes im PSI Netzwerk stehendes System (Achtung: es muss bereits eine SSH-Verbindung zu hopx.psi.ch bestehen!)

$ ssh -D 9000 -J <user>@hopx.psi.ch <user>@internes-system.psi.ch

...öffnet auf dem Clientsystem lokal den Port 9000. Verbindungen darauf werden durch den SSH-Tunnel zu "internes-system.psi.ch" gesendet, und von dort zum internen Server.

Die weiter oben beschriebene Option "-L" für die Port-Weiterleitung von bspw. RDP-Verbindungen kann gleichzeitig mit der "-D" Option genutzt werden. Z. B. 

$ ssh -D 9000 -L 8888:winterm4.psi.ch:3389 -J <user>@hopx.psi.ch <user>@internes-system.psi.ch

(Auch in diesem Fall muss bereits eine SSH-Verbindung zu hopx.psi.ch bestehen!)

Nutzung mit der SSH config-Datei

Wenn man die SSH config-Datei nutzt, kann darin ebenfalls die entsprechende Angabe mit "DynamicForward 9000" gemacht werden. 

Beispiel, Ausschnitt aus der Config-Datei (siehe oben)

host internes-system.psi.ch 
           hostname internes-system.psi.ch 
           DynamicForward 9000 
           LocalForward 8389 winterm4.psi.ch:3389 
           LocalForward 8445 fileserver.psi.ch:445 

Wenn auf dem lokalen Clientsystem der Port für das dynamische Tunneling geöffnet wurde, kann man ihn mit dem Browser nutzen. Das wird weiter unten beschrieben. 

Dynamisches Tunneling mit Windows + Putty

Wie innerhalb Putty die Vorbereitung für das Dynamische Tunneling gemacht wird, wurde bereits weiter oben in den Abschnitten

"SSH-Verbindungen zu PSI internen Systemen mit Windows + Putty mit gleichzeitiger Port-Weiterleitung über das interne System (Beispiel RDP zu winterm4.psi.ch)"
 
"SSH Port-Weiterleitung via hopx.psi.ch mit Windows + Putty"
 
beschrieben. Dort wird beschrieben wie in der Tunneling-Konfiguration der lokale Port 9000 als "Dynamic forwarded port" hinzugefügt wird. 

Wichtig für den Benutzer ist, zu unterscheiden bei welcher Verbindung mit Putty der lokale Port 9000 für die Weiterleitung geöffnet wird. Entweder  schon bei der Verbindung zu hopx.psi.ch oder erst bei der zweiten Verbindung via hopx zu einem internen System im PSI-Netzwerk. 


Nutzung des Dynamischen Tunnelings

Nach dem nun eine SSH-Verbindung mit Unix/Linux/macOS oder Putty zu hopx.psi.ch oder einem System im internen PSI-Netzwerk aufgebaut wurde und lokal der Port 9000 zur Verfügung steht (Anleitungen siehe oben), kann dieser mit einem Browser genutzt werden. 

Jetzt kann man z. B. bei den Proxyeinstellungen des Firefox-Browsers (Einstellungen -> Allgemein -> Netzwerk) bei 

SOCKS Host: localhost Port: 9000 eintragen. 

Anstatt "localhost" kann auch "127.0.0.1" eingetragen werden. 

In das Feld No Proxy for: sollten zusätzlich alle Domain-/Hostnamen, IP-Adressen/-Ranges eingetragen werden, die direkt, d. h. ohne den Umweg über hopx.psi.ch oder dem internen System abgerufen werden sollen, bspw. localhost, 127.0.0.1, .ethz.ch, .com . 

Die Option "Proxy DNS when using SOCKS v5" muss mit einem Haken aktiviert werden.  Die Einstellungen müssen mit einem Klick auf "OK" bestätigt werden. 

Hinweis: 

Über hopx.psi.ch können PSI-Mitarbeiter nur PSI-interne Webseiten, www.psi.ch und intranet.psi.ch abrufen. Der Zugriff auf ServiceNOW sollte ebenfalls funktionieren.  Weitere PSI-eigene, aber extern gehostete Seiten können bei Bedarf freigegeben werden. Verbindungen zu PSI-fremden, externen Webseiten werden nicht weitergeleitet!! Wer uneingeschränkten Zugriff auf PSI-eigene Webseiten benötigt (wie wenn ein System vor Ort am PSI genutzt wird), dem empfehlen wir das dynamische Tunneling über ein PSI-internes System im PSI-Netzwerk und NICHT direkt via hopx.psi.ch.



 

Hinweis für macOS Benutzer

Wenn man interne Webseiten mit Hilfe des Safari-Browsers aufrufen möchte, muss die Socks-Proxy-Nutzung über die Netzwerkeigenschaften aktiviert werden. Dazu muss man die Systemeinstellungen -> Network -> die verwendete Netzwerkverbindung (Ethernet oder WiFi) -> Details -> (links) Proxies und dann im rechten Feld SOCKS proxy aktivieren. Dann im Feld Server "127.0.0.1" und im Feld Port "9000" eintragen. Die Proxyausnahmen werden unten in der Liste eingetragen. Dann mit "OK" bestätigen. 

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.