El problema 1.0
Estoy trabajando en un servidor que solo admite autenticación de dos factores (la autenticación de par de claves está deshabilitada). Entonces, cada vez que mi cliente SFTP quiere cargar un archivo, me pide un token ... después de 3 minutos que se convierte en un UX not_very_nice.
La solución 1.0
Así que aprendí sobre la multiplexación SSH y ahora puedo abrir una conexión maestra manualmente (desde el terminal), y todas las demás conexiones ssh se pueden multiplexar en la parte superior, así:
$ 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
$
Luego, desde otra terminal, o por otra pieza de software:
$ ssh my.example.com
Last login: Wed Oct 1 16:34:45 2014 from 12.34.56.78
$
Entonces, misión cumplida, no más entrar en el token 2FA. Y sin contraseña, para el caso, 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)
¡Algún software (por ejemplo, PyCharm IDE) utiliza su propia biblioteca SSH / binario / lo que sea! Lo que significa que nada de lo que escriba ~/.ssh/config
lo afectará, AFAIK.
Ese es mi problema actual: ¿hay alguna manera de "engañar" a dicho software para que use una conexión maestra ya existente?
Una idea: como normalmente puede configurar el software para usar un puerto diferente para conectarse, me preguntaba si sería posible configurar algún tipo de túnel que multiplexará las conexiones entrantes en el maestro existente. Pero mi foo me ha fallado ...
editar:
El propósito principal es conectarse al intérprete / depurador remoto de Python.
editar 2:
Todos los puertos están cerrados, excepto 22 y 80. Sin embargo, es posible hacer:
remote$ ssh localhost:2222
(password or securekey login, both work)
remote$
pero 2222 solo está abierto para conexiones desde localhost, y los administradores no abrirán ningún puerto adicional, diciendo "cualquiera podría usarlo".