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".
fonte
Respostas:
Um problema bastante interessante que você tem.
A solução real seria pedir ajuda ao administrador do sistema primeiro.
Se isso não for uma opção, a próxima melhor coisa é ter o libssh do pyCharm ou o que quer que ele use (eu pesquisei no Google e não consegui descobrir) analise seu `~ / .ssh / config '.
Se isso não for possível, você pode ser capaz de executar o seu próprio daemon ssh na escuta host remoto no endereço de retorno e conectá-lo com uma frente local.
Para configurar um daemon ssh sem privilégios (copiado de um link na resposta SF ):
Agora encaminhe uma porta local para ela (você fará login com 2fa aqui):
E pyCharm direto para
localhost:2230
. Você também pode configurar a autenticação do par de chaves no seu sshd personalizado.Observe que este é um tiro no escuro, e seu administrador de sistemas pode não gostar disso.
Há uma grande chance de o pyCharm já usar o OpenSSH para sua implementação ssh. Nesse caso, adicionar suporte à multiplexação ao pyCharm seria muito mais fácil do que a solução alternativa que propus.
fonte
Match Address 127.0.0.1 PasswordAuthentication yes
provavelmente seguida por um únicoMatch
em uma linha própria para fechar a seção, se você não estiver adicionando isso no final do arquivo.