O problema 1.0
Estou trabalhando em um servidor que suporta apenas autenticação de dois fatores (a autenticação do par de chaves está desativada). Portanto, toda vez que meu cliente SFTP deseja fazer upload de um arquivo, ele solicita um token ... depois de 3 minutos, isso se torna um UX not_very_nice.
A solução 1.0
Então, eu aprendi sobre a multiplexação SSH e agora posso abrir uma conexão mestre manualmente (a partir do terminal), e todas as outras conexões ssh podem ser multiplexadas na parte superior, da seguinte forma:
$ 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
$
Em seguida, de outro terminal ou de outro software:
$ ssh my.example.com
Last login: Wed Oct 1 16:34:45 2014 from 12.34.56.78
$
Portanto, missão cumprida, não é mais necessário inserir o token 2FA. E nenhuma senha, por sinal, 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)
Alguns softwares (por exemplo, PyCharm IDE) usam sua própria biblioteca SSH / binária / qualquer que seja! Significando que nada que eu digitar ~/.ssh/config
irá afetá-lo, AFAIK.
Esse é o meu problema atual: existe uma maneira de "enganar" esse software para usar uma conexão mestre já existente?
Uma idéia: como você geralmente pode configurar o software para usar uma porta diferente à qual se conectar, fiquei pensando se seria possível configurar algum tipo de encapsulamento que multiplexaria as conexões de entrada no mestre existente. Mas meu foo falhou comigo ...
editar:
O principal objetivo é conectar-se ao interpretador / depurador remoto do Python.
editar 2:
Todas as portas estão fechadas, exceto as 22 e 80. No entanto, é possível fazer:
remote$ ssh localhost:2222
(password or securekey login, both work)
remote$
mas o 2222 é aberto apenas para conexões do host local e os administradores não abrem portas adicionais, dizendo "qualquer um pode usá-lo".