Il problema 1.0
Sto lavorando su un server che supporta solo l'autenticazione a due fattori (l'autenticazione della coppia di chiavi è disabilitata). Quindi ogni volta che il mio client SFTP vuole caricare un file, mi chiede un token ... dopo 3 minuti che diventa un UX not_very_nice.
La soluzione 1.0
Quindi ho imparato a conoscere il multiplexing SSH e ora posso aprire manualmente una connessione master (dal terminale) e tutte le altre connessioni ssh possono essere multiplexate in alto, in questo modo:
$ 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
$
Quindi, da un altro terminale o da un altro software:
$ ssh my.example.com
Last login: Wed Oct 1 16:34:45 2014 from 12.34.56.78
$
Quindi, missione compiuta, non più entrare nel token 2FA. E nessuna password, del resto, 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
Problema 2.0 (TLDR)
Alcuni software (ad esempio PyCharm IDE) usano la propria libreria SSH / binaria / qualunque cosa! Ciò significa che nulla che scrivo ~/.ssh/config
lo influenzerà, AFAIK.
Questo è il mio problema attuale: esiste un modo per "ingannare" tale software in modo da utilizzare una connessione master già esistente?
Un'idea: poiché di solito è possibile configurare il software per utilizzare una porta diversa a cui connettersi, mi chiedevo se fosse possibile impostare un qualche tipo di tunneling che multiplexasse le connessioni in entrata sul master esistente. Ma il mio ragazzo mi ha deluso ...
modificare:
Lo scopo principale è connettersi all'interprete / debugger remoto di Python.
modifica 2:
Tutte le porte sono chiuse tranne le 22 e le 80. Tuttavia, è possibile fare:
remote$ ssh localhost:2222
(password or securekey login, both work)
remote$
ma 2222 è aperto solo per le connessioni da localhost e gli amministratori non apriranno alcuna porta aggiuntiva, dicendo "chiunque potrebbe usarlo".