web-dev-qa-db-fra.com

Est-il possible de SSH via le port 80?

Je suis derrière un pare-feu réseau qui ne me laisse pas passer par le port par défaut. À cause de cela, je ne peux pas placer de branches bzr dans mon référentiel. Je voudrais savoir s'il est possible de proxy le ssh par le port 80 afin que je puisse pousser les branches.

J'ai entendu dire que tire-bouchon vous permet de le faire mais je ne suis pas sûr de savoir comment le faire exactement.

Si vous connaissez un serveur proxy qui vous permet de le faire, veuillez le mentionner.

19
jokerdino

Un bon pare-feu d'entreprise inspectera le trafic quel que soit le port. Il est donc possible que le changement de port ne fonctionne pas.

Si vous avez le contrôle sur le serveur et que vous voulez toujours l'essayer, vous pouvez changer le port sshd en port 80. Warning Si quelque chose d'autre est en cours d'exécution sur le port 80 (sur le serveur), cela ne fonctionnera pas et signifiera probablement que vous perdez complètement l'accès SSH au serveur!

Vous devrez modifier /etc/ssh/sshd_config et modifier Port en 80. Puis courir

Sudo restart ssh

Et connectez ensuite:

ssh user@Host -p80

Votre chemin bzr ressemblerait alors à quelque chose comme: bzr+ssh://Host:80/path/


Une autre méthode consiste à utiliser WebDav. Cela devrait éviter complètement le problème du pare-feu, car tout se passe sur le port 80, mais vous devrez exécuter Apache et configurer un certain nombre d'éléments:

  1. Obtenir WebDav installé
  2. Placez votre succursale au bon endroit
  3. Utilisez le plugin bzr-webdav pour vous connecter

Un VPN peut être une option, mais si ssh est verrouillé, cela devrait également être exclu.

Vous voudrez peut-être simplement avoir un mot avec les administrateurs de votre réseau. Vous devez faire quelque chose et ils vous arrêtent. S'ils ont une raison de bloquer ssh, ils verront probablement toute tentative extrême de le contourner assez négativement ...

En bref, il serait peut-être plus sûr de leur parler.

18
Oli

SSH par le proxy

Si le pare-feu vous le permet, vous pouvez exécuter ssh sur n’importe quel port, mais cela nécessite que le serveur ssh soit à l’écoute sur ce port. Il est peu probable que le port 80 fonctionne, car la plupart des endroits dotés de pare-feu analysent le trafic sur ce port et bloquent tout ce qui n'est pas HTTP. Mais le port 443, qui est normalement le port HTTPS, fonctionne souvent, car SSH et HTTPS se ressemblent beaucoup en ce qui concerne les logiciels de filtrage; votre session SSH ressemblera donc à une session HTTPS. (Il est possible de distinguer les protocoles HTTPS et SSH afin que cela ne fonctionne pas si le pare-feu est suffisamment sophistiqué.)

Si vous avez le contrôle sur le serveur, faites-le écouter sur le port 443 en plus du port 22 (le port ssh normal). Vous pouvez configurer le port dans /etc/ssh/sshd_config: ajouter une ligne

Port 443

en plus du Port 22 qui devrait déjà être là. Notez que cela suppose que le serveur ssh n'est pas également un serveur HTTPS. Si tel est le cas, vous devez rechercher un autre port que le pare-feu vous permet d'utiliser ou un autre serveur ssh (voir la section Transfert ci-dessous).

Si vous n'avez pas besoin de définir un proxy Web dans votre navigateur Web, vous pouvez essayer de vous connecter directement:

ssh -p 443 myserver.example.com

Si cela fonctionne, définissez un alias dans votre ~/.ssh/config:

Host myserver
HostName myserver.example.com
Port 443

Si vous devez définir un proxy Web dans votre navigateur Web, indiquez à ssh de passer par le proxy. Installer tire-bouchon . Définissez un alias comme celui-ci dans votre ~/.ssh/config, où http://proxy.acme.com:3128/ est le proxy que vous utilisez pour HTTPS vers l'extérieur (remplacez-le par le nom d'hôte et le port appropriés):

Host myserver
HostName myserver.example.com
Port 443
ProxyCommand /usr/bin/corkscrew proxy.acme.com 3128 %h %p

SSH sur SSH

Si vous pouvez accéder à une machine extérieure à l’aide d’une des techniques décrites ci-dessus, mais pas à la machine qui vous intéresse, utilisez-la pour transférer une connexion. En supposant que vous puissiez utiliser ssh sur une machine nommée mygateway et que vous souhaitez atteindre le serveur SSH sous mytarget, installez netcat-openbsd sur mygateway (ou, si Ubuntu n’exécute pas, assurez-vous qu’il dispose de la commande nc. . Mettez ceci dans votre ~/.ssh/config:

Host mytarget
ProxyCommand ssh mygateway nc %h %p

SSH à Apache

Si l'hôte auquel vous souhaitez vous connecter exécute déjà Apache et écoute sur le port 443 et que vous avez le contrôle sur cet hôte, vous pouvez configurer cet Apache pour qu'il accepte les connexions SSH et les transfère. Voir Mise en tunnel de SSH sur HTTP (S) .

15
Gilles

Je viens de lire une solution sophistiquée ici:

http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html

Vous pouvez SSH home sur le port 80 même si votre serveur domestique utilise également un serveur Web sur le port 80.

En supposant que le serveur domestique exécute Apache. L'idée consiste à activer mod_proxy sur votre serveur, puis à le restreindre à la connexion à localhost (proxy.conf):

<IfModule mod_proxy.c>
         ProxyRequests On
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Deny from all
        </Proxy>
        <Proxy localhost>
          Allow from all
        </Proxy>
        AllowCONNECT 22
        ProxyVia On
</IfModule>

Maintenant, vous pouvez faire une demande de connexion HTTP à l'hôte local et le serveur Web établira un tunnel pour vous. Vous devez seulement vous assurer que tout le trafic passe par votre proxy:

ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com

Assurez-vous que les connexions localhost à SSH ne sont pas privilégiées (pour éviter de laisser entrer des étrangers ...)

Cela devrait fonctionner si vous êtes derrière un routeur qui n'autorise que le port 80.

Si vous êtes derrière un proxy (vous devez donc configurer le proxy dans votre navigateur pour accéder au Web), vous devez d'abord établir un tunnel vers votre propre hôte, puis émettre une autre demande CONNECT à l'intérieur de ce tunnel pour accéder à votre hôte. Ceci est plus sophistiqué, vous devrez utiliser 2 netcats pour cela.

Tout est possible, mais faites-le à vos risques et périls ...

METTRE À JOUR:

Ou simplement, utilisez simplement une application Web qui vous donne SSH via un navigateur. http://en.wikipedia.org/wiki/Web-based_SSH

3
Calmarius

Je suis désolé, je dois me faire l'avocat du diable.

Je sais qu'il y a probablement une raison pour cela. Cependant, pourquoi l'administrateur de votre réseau/pare-feu n'ouvre-t-il pas le port spécifique que vous recherchez? Du point de vue de la sécurité, voulez-vous courir le risque que Web-Inspect manque quelque chose? S'il est configuré pour contourner le port 80 pour le trafic std, et que vous vous mettez en danger.

Je suis d'accord avec quelques suggestions ci-dessus, où un point à point vpn peut être une option plus sûre. Encore une fois, du point de vue de la sécurité, je serais intéressé de savoir la raison pour laquelle vous contournez réellement les stratégies de sécurité et pourquoi vous ne pouvez pas placer votre serveur dans un dmz ou un réseau fédérateur pour l’accès. Juste moi. Bonne chance.

2
Solarfinder

Si vous n'avez aucun contrôle sur le serveur pour changer le port SSH en port 80 ou si vous ne pouvez pas utiliser SSH sur le port 80 car le pare-feu vous empêche de transférer de telles données via le port 80, vous pouvez essayer TOR.

TOR est un immense réseau. Votre ordinateur se connecte à un autre ordinateur quelque part dans le monde. Cet ordinateur se connecte à un autre jusqu'à atteindre le serveur SSH. Tout cela est compatible avec le pare-feu, cela se produit sur le port 443 (que votre entreprise ne bloque pas, ou bien… eh bien, ce n'est pas si malin d'eux). C'est littéralement juste un énorme proxy ou VPN, et c'est crypté aussi. De cette façon, vous pouvez accéder à n'importe quel hôte sur n'importe quel port (également le SSH d'un serveur sur le port 22).

Jetez-y un coup d'oeil en ligne sur www.torproject.org .

2
Robbietjuh