SSH kleine Tricks

In diesem Artikel wurden unsere Best Practices für eine effizientere Verwendung von SSH zusammengestellt. Daraus lernen Sie, wie:

  • Fügen Sie dem SSH-Login den zweiten Faktor hinzu
  • Sicher zu verwendende Agentenweiterleitung
  • Melden Sie sich von einer SSH-Sitzung ab
  • Halten Sie das permanente Terminal offen
  • Teilen Sie eine Remote-Terminalsitzung mit einem Freund (ohne Zoom!)

Hinzufügen eines zweiten Faktors zu Ihrer SSH


Der zweite Authentifizierungsfaktor kann auf fünf verschiedene Arten zu Ihren SSH-Verbindungen hinzugefügt werden:

  1. Aktualisieren Sie Ihr OpenSSH und verwenden Sie den Verschlüsselungsschlüssel. Im Februar 2020 wurde OpenSSH um die Unterstützung von FIDO U2F-Verschlüsselungsschlüsseln (Universal Second Factor) erweitert. Dies ist eine großartige neue Funktion, aber es gibt eine Nuance: Nur Clients und Server, die auf OpenSSH Version 8.2 und höher aktualisiert wurden, können Verschlüsselungsschlüssel verwenden, da mit dem Update vom Februar neue Schlüsseltypen für sie eingeführt werden. Mit dem Befehl können ssh –VSie die Client-Version von SSH und die Server-Version mit dem Befehl überprüfennc [servername] 22

    Der Februar-Version wurden zwei neue Schlüsseltypen hinzugefügt - ecdsa-sk und ed25519-sk (zusammen mit den entsprechenden Zertifikaten). Um eine Schlüsseldatei zu generieren, geben Sie einfach Ihren Verschlüsselungsschlüssel ein und führen Sie den folgenden Befehl aus:

    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    U2F . U2F — .

    , .

    - OpenSSH -sk-. U2F . - :

    $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk

    , , :

    $ ssh-add -K

    .
  2. PIV+PKCS11 Yubikey. SSHD . Yubico U2F+SSH PIV/PKCS11. FIDO U2F, , , .
  3. yubikey-agent ssh-. SSH Yubikeys. .
  4. Touch ID sekey. Sekey SSH , Mac’ Touch ID .
  5. Single Sign On SSH. . single sign on SSH — (MFA).

agent forwarding


Mit der SHH-Agentenweiterleitung kann ein Remote-Host auf den SSH-Agenten Ihres lokalen Geräts zugreifen. Wenn Sie SSH mit aktivierter Agentenweiterleitung verwenden (normalerweise über ssh -A), enthält die Verbindung zwei Kanäle: Ihre interaktive Sitzung und den Kanal für die Agentenweiterleitung. Über diesen Kanal stellt der von Ihrem lokalen SSH-Agenten erstellte Unix-Socket eine Verbindung zum Remote-Host her. Dies ist eine riskante Methode, da ein Benutzer mit Root-Zugriff auf einem Remote-Gerät auf Ihren lokalen SSH-Agenten zugreifen und sich möglicherweise als Sie im Netzwerk ausgeben kann. Wenn Sie den Standard-SSH-Agenten aus dem Open SSH-Kit verwenden, wissen Sie nicht einmal, dass dies passiert ist. Mit einem U2F-Schlüssel (oder Sekey) können Sie alle Versuche, Ihren SSH-Agenten von außen zu verwenden, effektiv blockieren.

Trotz dieser Vorsichtsmaßnahme ist es eine gute Idee, die Agentenweiterleitung so wenig wie möglich zu verwenden. Sie sollten es nicht bei jeder Sitzung verwenden. Verwenden Sie die Agentenweiterleitung nur, wenn Sie sicher sind, dass sie für die aktuelle Sitzung erforderlich ist.

Beenden einer Hängesitzung


Eine Unterbrechung des Netzwerks, ein unkontrolliertes Verhalten von Programmen oder eine Escape-Sequenz, die die Tastatureingabe blockiert, sind mögliche Ursachen für eine Unterbrechung der SSH-Sitzung.

Es gibt verschiedene Möglichkeiten, eine blockierte Sitzung zu beenden:

  1. Wird automatisch beendet, wenn das Netzwerk unterbrochen wird. In Ihrer .ssh / config müssen Sie Folgendes hinzufügen:

    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh sendet alle ServerAliveInterval-Sekunden ein Echo an den Remote-Host, um die Verbindung zu überprüfen. Wenn weitere ServerAliveCountMax-Echos keine Antwort erhalten, beendet ssh die Verbindung im Zeitlimit und beendet die Sitzung.
  2. . ssh ~ () . ~. . ( .) ~? . , ~ , ~ .

? . IPv4 WiFi, IP- . SSH TCP , , , IP-, , SSH . IP-, . , TCP- . . , . IPv6 , . , .


Es gibt zwei verschiedene Ansätze, um eine Verbindung aufrechtzuerhalten, wenn Sie zwischen verschiedenen Netzwerken wechseln oder wenn Sie die Verbindung für kurze Zeit trennen möchten.

1. Verwenden Sie Mosh oder Eternal Terminal.

Wenn Sie wirklich eine Verbindung benötigen, die auch beim Wechseln zwischen Netzwerken nicht nachlässt, verwenden Sie die Mosh Mobile Shell. Dies ist eine sichere Shell, die zuerst einen SSH-Handshake verwendet und dann für die Dauer der Sitzung auf einen eigenen verschlüsselten Kanal wechselt. So schafft Mosh einen separaten, sehr stabilen und sicheren Kanal, der Internetunterbrechungen, Änderungen der IP-Adresse Ihres Laptops, schwerwiegenden Netzwerkausfällen und vielem mehr standhält, alles dank der Magie von UDP-Verbindungen Mosh-Synchronisierungsprotokoll.

Um Mosh verwenden zu können, müssen Sie es sowohl auf dem Client als auch auf dem Server installieren und die Ports 60000-61000 für den getrennten UPD-Verkehr zu Ihrem Remote-Host öffnen. In Zukunft wird es ausreichen, um die Verbindung zu verwenden mosh user@server.

Mosh arbeitet auf der Ebene von Bildschirmen und Tastenanschlägen, was eine Reihe von Vorteilen gegenüber der Weiterleitung des binären Stroms von Standardeingaben und -ausgaben zwischen dem Client und dem SSH-Server bietet. Wenn wir nur Bildschirme und Tastenanschläge synchronisieren müssen, wird das Wiederherstellen einer unterbrochenen Verbindung später viel einfacher. Während SSH alles puffert und sendet, was passiert ist, muss Mosh nur die Tastenanschläge puffern und den letzten Frame des Terminalfensters mit dem Client synchronisieren.

2. Verwenden Sie tmux

Wenn Sie kommen und gehen möchten, wann Sie möchten, und die Terminalsitzung auf einem Remote-Host behalten möchten, verwenden Sie den Terminal-Multiplexer tmux . Ich liebe tmux und benutze es ständig. Wenn Ihre SSH-Verbindung unterbrochen ist, müssen Sie nur die Verbindung wiederherstellen und eingeben, um zu Ihrer tmux-Sitzung zurückzukehren tmux attach. Darüber hinaus verfügt es über wunderbare Funktionen wie Registerkarten und Bedienfelder innerhalb des Terminals, ähnlich den Registerkarten im iOS-Terminal, und die Möglichkeit, Terminals mit anderen zu teilen.

Einige Leute mögen es, ihren tmux mit Byobu zu verschönern, einem Paket, das die Benutzerfreundlichkeit von tmux erheblich verbessert und viele Tastaturkürzel hinzufügt. Byobu wird mit Ubuntu ausgeliefert und ist über Homebrew einfach auf einem Mac zu installieren.

Teilen einer Remote-Terminalsitzung mit einem Freund


Manchmal möchten Sie beim Debuggen komplexer Probleme auf Ihren Servern eine SSH-Sitzung mit jemandem teilen, der sich nicht im selben Raum wie Sie befindet. tmux ist perfekt für eine solche aufgabe! Es reicht aus, nur ein paar Schritte zu unternehmen:

  1. Stellen Sie sicher, dass sich tmux auf Ihrem Bastion-Host oder auf einem Server befindet, mit dem Sie arbeiten werden.
  2. Sie müssen beide über SSH über ein Konto eine Verbindung zum Gerät herstellen.
  3. Einer von Ihnen muss tmux starten, um eine tmux-Sitzung zu starten.
  4. Ein anderer sollte tmux attach ausführen
  5. Voila! Sie haben ein gemeinsames Terminal.

Wenn Sie anspruchsvollere Mehrbenutzer-tmux-Sitzungen wünschen, versuchen Sie es mit tmate. Dies ist eine Verzweigung von tmux, die gemeinsame Terminalsitzungen erheblich vereinfacht.

All Articles