SSH durch HTTP Proxy und Firewall

Wer nur durch einen HTTP Proxy Server in das Internet kommt, hat ein Problem mit SSH Verbindungen.

Durch einen kleinen Trick kann man sich trozdem verbinden. Man ändern der Port vom SSH Server von Port 22 auf 443. Der Port 443 ist für SSL Verbindungen reserviert und wird vom Proxy Server ohne Prüfung durchgelassen.

Den Port kann man am SSH-Server ändern oder am Router die NAT Einstellung.

Jetzt wird Port 22 und 443 für SSH verwendet.

sudo vim /etc/ssh/sshd_config

Port 22
Port 443

Einen Neustart von Dienst nicht vergessen.

sudo service ssh restart

Wenn man sich jetzt mit dem SSH Client verbindet, so gibt man den Proxy Server und den SSH Server an. Will man seinen Traffik über die SSH Verbindung tunnel, so kann man SOCKS5 (Port 1080) verwenden.

sudo vim ~/.ssh/config

Host *
  ProxyCommand corkscrew proxy.hostname.de 8080 %h %p ~/.ssh/proxyauth

Wenn der Proxy Server ein Login und Passwort benötigt, dann hinterlegen Sie es im Benutzerverzeichnis.

echo „login:password“ > ~/.ssh/proxyauth

Jetzt können Sie die Verbindung mit SSH von Client durch den Proxy zum SSH Server via Port 443 auf bauen.

$ ssh -D 1080 user@domain.de -p 443

Mit einem Browser (Firefox,Chrome,etc.) können Sie den Tunnel via SOCKS5 Port 1080 verwenden und kommen so in das Internet. Ein Test mit der Seite http://www.netip.de/ zeigt Ihnen die Remote Adresse an. Die IP Adresse sollte jetzt dem SSH Server entsprechen.

Das Betriebsystem Microsoft Windows enthält keinen SSH Client. Ein kostenloser SSH Client ist PuTTY. Die Einstellungen für PuTTY lauten.

    Session

  • Host Name: domain.de
  • Port: 443
    Connection / Proxy

  • Proxy hostname: proxy.hostname.de
  • Port: 8080
  • Username: login
  • Password: password
    Connection / SSH / Tunnels

  • Source por: 1080
  • Destination: Dynamic / Auto

SSH Server mit Public-Key und ohne Passwort

Wer einen SSH Server betreibt sollte in der heuten Zeit die Sicherheitseinstellung im Auge behalten. Es erfolgen immer mehr Brute-force attacken gegen SSH Server, um den Zugang zu dem Server zu erlangen. Deshalb sollte man kein Passwort verwenden, sondern einen Public-Key für die Anmeldung.

Zu erst erstellen wir uns einen Private und Public-Key.

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

Den Public-Key (id_rsa.pub) kopieren wir auf das Zielsystem in die Datei „~/.ssh/authorized_keys“.

mkdir ~/.ssh
chmod 700 ~/.ssh
cp id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Dann sind einige Änderung in der SSH Konfiguration durch zu führen, damit eine Anmeldung nur noch mit dem Public-Key möglich ist.

sudo vim /etc/ssh/sshd_config

# Benutzer "root" darf sich nicht einloggen
PermitRootLogin no
# Nur aufgeführten Benutzer dürfen sich einloggen
AllowUsers Tarzan Jane
# Anmeldung mit Benutzername und Passwort deaktivieren
PasswordAuthentication no

Der SSH Server muß neu gestartet werden, um die Einstellungen zu übernehmen.

sudo service ssh restart