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".
fuente
Respuestas:
Un problema bastante interesante que tienes.
La solución real sería pedirle ayuda a su administrador de sistemas primero.
Si esa no es una opción, lo mejor es tener libssh de pyCharm o lo que sea que use (busqué en Google y no pude resolverlo) analizar su `~ / .ssh / config '.
Si eso no es posible, es posible que pueda ejecutar su propio demonio ssh en el host remoto que escucha en la dirección de bucle invertido y conectarse a él con un reenvío local.
Para configurar un demonio ssh sin privilegios (copiado de un enlace en la respuesta SF ):
Ahora reenvíe un puerto local (iniciará sesión con 2fa aquí):
Y dirigir pyCharm a
localhost:2230
. También puede configurar la autenticación de par de claves en su sshd personalizado.Tenga en cuenta que esta es una posibilidad remota, y su administrador de sistemas puede no apreciarlo.
Existe una gran posibilidad de que pyCharm ya use OpenSSH para su implementación ssh. Si es así, agregar soporte de multiplexación a pyCharm sería mucho más fácil que la solución alternativa que he propuesto.
fuente
Match Address 127.0.0.1 PasswordAuthentication yes
probablemente sea seguida por una solaMatch
en una línea propia para cerrar la sección, si no está agregando esto al final del archivo.