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".