Vous contournez l'authentification SSH à deux facteurs avec la connexion principale et la redirection de port?


8

Le problème 1.0

Je travaille sur un serveur qui ne prend en charge que l'authentification à deux facteurs (l'authentification par paire est désactivée). Donc, chaque fois que mon client SFTP veut télécharger un fichier, il me demande un token ... après 3 minutes, cela devient un UX not_very_nice.

La solution 1.0

J'ai donc appris le multiplexage SSH et maintenant je peux ouvrir une connexion maître manuellement (à partir du terminal), et toutes les autres connexions ssh peuvent être multiplexées en haut, comme ceci:

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

Ensuite, à partir d'un autre terminal ou d'un autre logiciel:

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

Donc, mission accomplie, plus de jeton 2FA. Et pas de mot de passe, d'ailleurs, 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

Problème 2.0 (TLDR)

Certains logiciels (par exemple PyCharm IDE) utilisent leur propre bibliothèque SSH / binaire / peu importe! Ce qui signifie que rien que je tape ~/.ssh/configne l'affectera, AFAIK.

C'est mon problème actuel: existe-t-il un moyen de "tromper" ces logiciels pour qu'ils utilisent une connexion principale déjà existante?


Une idée: parce que vous pouvez généralement configurer un logiciel pour utiliser un autre port auquel vous connecter, je me demandais s'il était possible de configurer une sorte de tunneling qui multiplexerait les connexions entrantes sur le maître existant. Mais mon foo m'a échoué ...

Éditer:

Le but principal est de se connecter à un interpréteur / débogueur Python distant.

modifier 2:

Tous les ports sont fermés autres que 22 et 80. Il est cependant possible de faire:

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

mais 2222 n'est ouvert que pour les connexions de l'hôte local, et les administrateurs n'ouvriront aucun port supplémentaire, disant que "n'importe qui pourrait l'utiliser".


Je peux mal comprendre votre problème, mais ne pouvez-vous pas le contourner avec une monture ssh locale? Cela transformerait votre action sftp en une copie locale, le ssh étant géré par le processus de montage que vous pouvez contrôler.
Belrog

J'aurais dû mentionner cela dans la question ... J'ai besoin du SSH pour exécuter l'interpréteur / débogueur Python distant. J'ai en fait un montage sshfs en place pour la synchronisation des fichiers :)
frnhr

Je suppose que vous travaillez à distance sur des morceaux de matériel très spécifiques? Le développement à distance est vraiment douloureux. Une machine virtuelle locale serait une meilleure idée si vous pouvez la faire fonctionner.
Belrog

Vrai dat! Mais sur ce projet particulier, il y a plusieurs complications avec la mise en place d'un environnement local qui ne peuvent pas être facilement résolues :(
frnhr

@Belrog J'ai converti votre réponse en commentaire. Veuillez ne poster une réponse que si elle répond réellement à la question. Pour demander des éclaircissements, postez un commentaire. C'est pour ça qu'ils sont.
terdon

Réponses:


2

Vous avez un problème assez intéressant.

La vraie solution serait de demander d'abord à votre administrateur système de l'aide.

Si ce n'est pas une option, la meilleure chose à faire est d'avoir libssh de pyCharm ou tout ce qu'il utilise (j'ai fait quelques recherches sur Google et je n'ai pas pu le comprendre) analyser votre `~ / .ssh / config '.

Si ce n'est pas possible, vous pourrez peut- être exécuter votre propre démon ssh sur l'hôte distant en écoutant l'adresse de bouclage et vous y connecter avec un transfert local.

Pour configurer un démon ssh non privilégié (copié à partir d' un lien sur la réponse 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

Maintenant, transférez-y un port local (vous vous connecterez avec 2fa ici):

 ssh -L 2230:localhost:2230 example_com_master

Et dirigez pyCharm vers localhost:2230. Vous pouvez également configurer l'authentification par paire de clés sur votre sshd personnalisé.

Notez que c'est un long plan, et votre administrateur système peut ne pas l'apprécier.

Il y a de fortes chances que pyCharm utilise déjà OpenSSH pour son implémentation ssh. Si tel est le cas, l'ajout de la prise en charge du multiplexage à pyCharm serait beaucoup plus facile que la solution de contournement que j'ai proposée.


Merci d'avoir répondu. Les administrateurs ne vont probablement pas me permettre d'exécuter mon propre sshd (je doute qu'il y ait même un port disponible). Mais si je pouvais obtenir un sshd distinct en cours d'exécution sur le serveur, je pense que je n'aurais peut-être pas besoin de multiplexer quoi que ce soit, il suffit de configurer le serveur pour l'authentification par paire de clés. Ou y a-t-il des avantages que j'ai ratés?
2014

Vous avez raison de ne pas avoir besoin du multiplexage :). De plus, je sais que je serais énervé si un utilisateur faisait quelque chose comme ça sans me le demander au préalable. De plus, si vous demandez de toute façon au sysadmin, une solution beaucoup plus saine serait de ne pas avoir besoin de 2fa de la part de localhost. C'est ce que je fais d'habitude de toute façon.
GnP

:) Et s'il n'y avait pas 2fa de localhost, le tunneling peut-il résoudre le problème?
2014

Exactement, si vous n'avez pas besoin de 2fa de la part de l'hôte local, la connexion via un tunnel revient à se connecter localement. La magie sshd_config pour elle est Match Address 127.0.0.1 PasswordAuthentication yes probablement suivie d'un simple Matchdans une ligne à part pour fermer la section, si vous n'ajoutez pas cela à la fin du fichier.
GnP
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.