Trabalhe em torno do SSH auth de dois fatores com conexão mestre e encaminhamento de porta?

8

O problema 1.0

Estou trabalhando em um servidor que suporta apenas a autenticação de dois fatores (a autenticação de keypair está desativada). Então toda vez que meu cliente SFTP quer fazer upload de um arquivo, ele me pede um token ... depois de 3 minutos que se torna uma UX not_very_nice.

A solução 1.0

Então eu aprendi sobre 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 no topo, assim:

$ 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
$

Então, de outro terminal ou por outro software:

$ ssh my.example.com
Last login: Wed Oct  1 16:34:45 2014 from 12.34.56.78
$ 

Então, missão cumprida, não mais entrar no token 2FA. E sem 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)

Algum software (por exemplo, PyCharm IDE) usa sua própria biblioteca SSH / binary / whatever! Significa que nada que eu digite ~/.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 ideia: como normalmente é possível configurar o software para usar uma porta diferente para conectar, eu queria saber se seria possível configurar algum tipo de encapsulamento que multiplexasse as conexões de entrada no mestre existente. Mas meu foo me falhou ...

edit:

O principal objetivo é conectar-se ao depurador / depurador remoto do Python.

edit 2:

Todas as portas estão fechadas além das 22 e 80. É, no entanto, possível fazer:

remote$ ssh localhost:2222
(password or securekey login, both work)
remote$ 

mas 2222 em aberto apenas para conexões de localhost, e os administradores não abrirão portas adicionais, dizendo "qualquer um poderia usá-lo".

    
por frnhr 01.10.2014 / 18:44

1 resposta

2

Um problema bastante interessante que você tem.

A solução real seria pedir ajuda ao seu administrador de sistema primeiro.

Se isso não for uma opção, a próxima melhor coisa é ter o libssh do pyCharm ou o que ele usa (eu pesquisei e não consegui descobrir) analisar seu '~ / .ssh / config'.

Se isso não for possível, você pode conseguir executar seu próprio daemon ssh o host remoto ouvindo o endereço de loopback e se conectando a ele com um encaminhamento local.

Para configurar um daemon ssh não privilegiado (copiado de um link na resposta SF ):

  $ pwd
  /home/<USER>
  $ mkdir -p etc var/run
  $ cp /etc/sshd_config etc
  $ vi etc/sshd_config
  [Set 'Port 2230']
  [Set 'HostKey /home/<USER>/etc/ssh_host_rsa_key']
  [Set 'UsePrivilegeSeparation no']
  [Set 'PidFile /home/<USER>/var/run/sshd.pid']
  [:wq!]
  $ ssh-keygen -t rsa -f /home/<USER>/etc/ssh_host_rsa_key -N ''
  Generating public/private rsa key pair.
  Your identification has been saved in /home/<USER>/etc/ssh_host_rsa_key.
  Your public key has been saved in /home/<USER>/etc/ssh_host_rsa_key.pub.
  The key fingerprint is:
  02:5d:02:5d:e8:2e:c6:b9:4c:d9:93:6c:13:ef:5d:61 hein@vmbert2k8
  $ /usr/sbin/sshd -f /home/<USER>/etc/sshd_config -D

Agora envie uma porta local para ele (você entrará com o 2fa aqui):

 ssh -L 2230:localhost:2230 example_com_master

E pyCharm direto para localhost:2230 . Você também pode configurar o auth do keypair no seu sshd personalizado.

Note que este é um tiro longo, e seu administrador de sistema pode não gostar disso.

Há uma grande chance de que o pyCharm já use o OpenSSH para sua implementação ssh. Se isso for verdade, adicionar suporte a multiplexação ao pyCharm seria muito mais fácil do que a solução proposta por mim.

    
por 06.10.2014 / 22:15