Das Problem 1.0
Ich arbeite an einem Server, der nur Zwei-Faktor-Authentifizierung unterstützt (Schlüsselpaarauthentifizierung ist deaktiviert). Jedes Mal, wenn mein SFTP-Client eine Datei hochladen möchte, fordert er mich nach einem Token auf ... nach 3 Minuten wird dies zu einer not_very_nice UX.
Die Lösung 1.0
Also habe ich etwas über SSH-Multiplexing gelernt und kann jetzt eine Master-Verbindung manuell (vom Terminal aus) öffnen, und alle anderen SSH-Verbindungen können wie folgt oben gemultiplext werden:
$ ssh example_com_master
Verification code: (/me enters the token code)
Password: (/me enters my pass)
Welcome to Ubuntu 14.04 blah blah....
Last login: Wed Oct 1 11:24:15 2014 from 12.34.56.78
$
Dann von einem anderen Terminal oder von einer anderen Software:
$ ssh my.example.com
Last login: Wed Oct 1 16:34:45 2014 from 12.34.56.78
$
Mission erfüllt, kein 2FA-Token mehr eingeben. Und kein Passwort, SSH FTW!
~ / .ssh / config:
Host example_com_master
HostName my.example.com
User username
PubkeyAuthentication no
ControlMaster yes
ControlPath ~/.ssh/sockets/example_com
ControlPersist 10
Host my.example.com
HostName my.example.com
User username
PubkeyAuthentication no
ControlMaster no
ControlPath ~/.ssh/sockets/example_com
Problem 2.0 (TLDR)
Einige Software (z. B. PyCharm IDE) verwenden ihre eigene SSH- Bibliothek / binär / was auch immer! Das bedeutet, dass nichts, was ich ~/.ssh/config
eingebe, es beeinflusst, AFAIK.
Das ist mein aktuelles Problem: Gibt es eine Möglichkeit, solche Software dazu zu bringen, eine bereits vorhandene Master-Verbindung zu verwenden?
Eine Idee: Da Sie normalerweise Software so konfigurieren können, dass sie einen anderen Port für die Verbindung verwendet, habe ich mich gefragt, ob es möglich sein könnte, eine Art Tunneling einzurichten, mit dem eingehende Verbindungen auf einen vorhandenen Master gemultiplext werden. Aber mein Foo hat mich im Stich gelassen ...
bearbeiten:
Hauptzweck ist die Verbindung zum Remote-Python-Interpreter / Debugger.
bearbeiten 2:
Alle Ports außer 22 und 80 sind geschlossen. Es ist jedoch möglich:
remote$ ssh localhost:2222
(password or securekey login, both work)
remote$
2222 ist jedoch nur für Verbindungen von localhost geöffnet, und Administratoren öffnen keine zusätzlichen Ports und sagen "Jeder kann es verwenden".
quelle
Antworten:
Ein interessantes Problem, das Sie haben.
Die wirkliche Lösung wäre, zuerst Ihren Systemadministrator um Hilfe zu bitten.
Wenn dies keine Option ist, ist es das nächstbeste, pyCharms libssh oder was auch immer es verwendet zu haben (ich habe ein bisschen gegoogelt und konnte es nicht herausfinden), um Ihr ~ / .ssh / config zu analysieren.
Wenn das nicht möglich ist, Sie könnten die Lage sein, Ihren eigenen SSH - Daemon läuft auf dem Remote - Host Hören auf der Loopback - Adresse und , um es mit einem lokalen vorwärts zu verbinden.
So richten Sie einen nicht privilegierten SSH-Dämon ein (kopiert von einem Link in der SF-Antwort ):
Leiten Sie nun einen lokalen Port an diesen weiter (Sie werden sich hier mit 2fa anmelden):
Und direkt pyCharm an
localhost:2230
. Sie können die Schlüsselpaarauthentifizierung auch auf Ihrem benutzerdefinierten SSHD einrichten.Beachten Sie, dass dies ein langer Weg ist und Ihr Systemadministrator ihn möglicherweise nicht zu schätzen weiß.
Es besteht eine große Chance, dass pyCharm OpenSSH bereits für seine SSH-Implementierung verwendet. In diesem Fall wäre das Hinzufügen von Multiplexing-Unterstützung zu pyCharm viel einfacher als die von mir vorgeschlagene Problemumgehung.
quelle
Match Address 127.0.0.1 PasswordAuthentication yes
wahrscheinlich eine einzelneMatch
in einer eigenen Zeile, um den Abschnitt zu schließen, wenn Sie dies nicht am Ende der Datei hinzufügen.