# [OFF] SSH et proxy / putty

## engil

Bonjour,

j'essaie depuis quelques jours de me connecter a mon pc a la maison, ou j'ai mis en place un serveur SSH.

J'essaie de me connecter depuis le boulot, pc sous Windows 2000, avec un Proxy HTTP (Blue Coat), et putty pour me connecter.

J'ai réglé mon ssh pour ecouter sur le 443, avec un routage de port sur le routeur (freebox v5) 443 -> @IPlocale:443.

En local, depuis le portable en wifi je me connecte sans probleme sur mon pc, mais depuis le boulot c'est une autre histoire.

Je pense que le proxy marche avec une authentification, si j'essaie de me connecter avec l'url du proxy dans Putty sans user@pass, j'ai l'erreur 407 Authentication required (ce qui me parait logique en fait).

Si je rentre le user@pass de ma session windows dans putty, j'ai l'erreur "Server unexpectedly closed network connection".

J'ai regardé sur le net, je ne suis pas le seul a vouloir faire ça, et j'ai trouvé quelques pistes vers des choses comme proxytunnel ( http://proxytunnel.sourceforge.net ) mais je ne vois pas trop comment utiliser ça sous windows.

J'ai mis ça en OFF car ça concerne pas mal le coté Windows, étant donné que la partie SSH en local fonctionne.

Si quelqu'un a déja cherché a faire quelque chose comme ça, je suis preneur d'infos ou de liens *explicites*  :Smile: 

Merci d'avance !

----------

## Astoria

Salut,

mefie toi du port 443 c'est le port par defaut pour SSL

----------

## razer

 *engil wrote:*   

> Bonjour,
> 
> En local, depuis le portable en wifi je me connecte sans probleme sur mon pc, mais depuis le boulot c'est une autre histoire.
> 
> Je pense que le proxy marche avec une authentification, si j'essaie de me connecter avec l'url du proxy dans Putty sans user@pass, j'ai l'erreur 407 Authentication required (ce qui me parait logique en fait).
> ...

 

N'y a t'il pas au niveau de la config de ton proxy une restriction d'accès en fonction de la plage IP/IP ?

Je dis çà car cela est possible avec squid:

```
acl maison src 192.168.3.0/255.255.255.0

http_access allow maison

http_access deny all
```

----------

## Astoria

De plus, si tu ne souhaites pas utiliser le port par defaut de ssh ( 22 ) je te conseil d'utiliser un port de haut rang. ( il y en a 65535 sur un PC, t'as le choix  :Wink: 

----------

## Zazbar

Si ton firewall empeche le passage par ssh .... il faudra que tu utilises un utilitaire du type corkscrew ...

Ce logiciel permet d'encapsuler du ssh dans SSL, et donc tu passeras tous les firewalls ...

Par contre tu devras avoir apache d'installer chez toi pour rediriger le traffic SSH vers le service qui va bien ....

plus d'infos ici : http://wiki.linuxquestions.org/wiki/Corkscrew

EDIT : oups cette solution n'est pas valide, corkscrew etant un logiciel linux ... et j'avais pas compris que le client etait un 2000, donc a moin d'installer cygwin ....

----------

## Desintegr

 *Zazbar wrote:*   

> Si ton firewall empeche le passage par ssh .... il faudra que tu utilises un utilitaire du type corkscrew ...

 

Je suis pas certain que ça fonctionne mieux.

Utiliser les options de proxy dans Putty revient au même que d'utiliser Corkscrew et le client OpenSSH.

C'est peut-être même aussi une authentification NTLM, et ça c'est pas terrible...

Tu peux essayer d'utiliser le ProxyTunnel[1], comme tu l'as suggéré, à la place de l'option de proxy de Putty.

Il faut installer ProxyTunnel sur ta machine Windows (il y une version Cygwin précompilée sur le site), mettre l'exécutable dans le PATH.

Ensuite, il faut cocher la case Local dans la configuration du proxy de Putty et régler correctement la ligne Telnet command, or local proxy command (pour régler l'adresse du proxy, ton login, ton mot de passe, le mode d'authentification, etc.).

D'autres documentations pour une autre méthode : http://dag.wieers.com/howto/ssh-http-tunneling/

[1] http://proxytunnel.sourceforge.net/

----------

## engil

Merci pour les differentes pistes !

Pour le port 443, je l'utilise car c'est le port ssl/https et le seul traffic autorisé est le traffic http/https (j'ai lu ça sur le net, pour passer a travers les restrictions d'un proxy). Il est clair que le port 22 n'est pas envisageable, et j'avais essayé avec un port superieur (1664, pour m'en souvenir...) mais je pense qu'il faudrait que j'essaie avec un port >10000.

@razer, pour la config du proxy, j'en sais trop rien car je n'ai absolument pas la main dessus et je pense qu'en tant que prestataire dans la boite ou je suis, si je demande des infos pour me connecter en SSH chez moi (=glandage en perspective), ce sera mal vu  :Wink: 

J'ai du trouver l'@ip du proxy et les diverses infos a coup de Nmap et affichage du source des pages de filtrage ...

@Desintegr, j'ai croisé ce nom (NTLM) sur le net, je vais regarder ce que c'est ...

----------

## Zazbar

 *engil wrote:*   

> @Desintegr, j'ai croisé ce nom (NTLM) sur le net, je vais regarder ce que c'est ...

 

NTLM est la méthode d'authentification de windows aupres des AD(active directory) et autre. Elle est basée sur ton nom d'utilisateur et ton mot de passe de domaine  :Smile: 

----------

## nico_calais

 *engil wrote:*   

> Merci pour les differentes pistes !
> 
> Pour le port 443, je l'utilise car c'est le port ssl/https et le seul traffic autorisé est le traffic http/https (j'ai lu ça sur le net, pour passer a travers les restrictions d'un proxy). Il est clair que le port 22 n'est pas envisageable, et j'avais essayé avec un port superieur (1664, pour m'en souvenir...) mais je pense qu'il faudrait que j'essaie avec un port >10000.
> 
> @razer, pour la config du proxy, j'en sais trop rien car je n'ai absolument pas la main dessus et je pense qu'en tant que prestataire dans la boite ou je suis, si je demande des infos pour me connecter en SSH chez moi (=glandage en perspective), ce sera mal vu 
> ...

 

Y a des chances que le proxy n'accepte que les ports 80 et 443.

J'ai la même chose à mon taf et proxytunnel est définitivemet la solution à ton problème.

Seulement, je ne sais pas trop comment tu peux l'utiliser nativement sous windows. Tu vas surement devoir faire appel à un cygwin ou à une virtualisation sur ta machine.

Chez moi, j'ai un fichier "config" dans mon ".ssh" avec cette commande dedans :

```

host [nom d'hote]

ProxyCommand /usr/bin/proxytunnel -p [proxy]:[port du proxy] -u [user] -s [mdp] -d [IP_perso]:443
```

----------

## Desintegr

J'ai relu la méthode donnée sur cette page : http://dag.wieers.com/howto/ssh-http-tunneling/

Et elle me semble pas mal du tout. Elle fait usage de deux proxies HTTP, celui de ton entreprise et un autre sur ton serveur (Apache).

Normalement, même s'il y a un filtrage qui laisse passer que le HTTP(S), ça devrait fonctionner.

Si tu as une authentification NTML sur le proxy de ton entreprise, Proxytunnel le gère aussi.

Elle est pas belle la vie ?  :Razz: 

 *nico_calais wrote:*   

> Seulement, je ne sais pas trop comment tu peux l'utiliser nativement sous windows. Tu vas surement devoir faire appel à un cygwin ou à une virtualisation sur ta machine.

 

La version Cygwin est simple à utiliser. Tu télécharges proxytunnel-1.7.0-win32.zip sur http://sourceforge.net/project/showfiles.php?group_id=39840

Tu dézippes les deux fichiers dans C:\Windows\ par exemple.

Enfin tu configures Putty  comme indiqué dans l'article.

----------

## xaviermiller

chez moi au boulot, seuls les ports HTTP et HTTPS passent. J'ai donc configuré mon routeur ADSL pour écouter sur le port HTTPS et le rediriger vers le port SSH de mon PC.

Ensuite, je configure Putty pour passer par le proxy en HTTP avec authentification et tout roule  :Smile: 

----------

## Desintegr

 *XavierMiller wrote:*   

> chez moi au boulot, seuls les ports HTTP et HTTPS passent. J'ai donc configuré mon routeur ADSL pour écouter sur le port HTTPS et le rediriger vers le port SSH de mon PC

 

Cette méthode ne fonctionne bien que s'il n'y a aucun filtrage au niveau de la couche application.

L'avantage d'utiliser la chaîne de deux proxies, c'est que le pare-feu n'y voit que du feu  :Razz: .

----------

## engil

Merci beaucoup pour les idées, j'ai quelques trucs a lire et pas vraiment le temps la (pas mal de boulot pour une fois...).

J'ai du mal à être convaincu par la version avec un serveur apache chez moi, j'ai déja un apache mais qui ecoute uniquement en local, et au niveau sécurité il faudrait que j'étudie ça un peu plus avant d'ouvrir mon serveur.

@nico_calais : quand tu dis 

 *Quote:*   

> 
> 
> Chez moi, j'ai un fichier "config" dans mon ".ssh" avec cette commande dedans : 
> 
> 

 

tu parles de ta machine perso chez toi ? Car j'ai vu ça mais étant sous winwin, je n'ai pas de ~/ ni de /etc/ pour configurer ssh.

Je vais essayer de passer les paramètres de proxytunnel dans Putty en proxy local, peut être que ça va suffire.

En tous cas, merci d'avoir fait chauffer vos neurones, ça fait plaisir  :Smile: 

----------

## nico_calais

 *engil wrote:*   

> 
> 
> tu parles de ta machine perso chez toi ? Car j'ai vu ça mais étant sous winwin, je n'ai pas de ~/ ni de /etc/ pour configurer ssh.
> 
> Je vais essayer de passer les paramètres de proxytunnel dans Putty en proxy local, peut être que ça va suffire.
> ...

 

Nan nan, de ma machine au boulot (Y en a qui ont de la chance de pouvoir nuxer au taf   :Wink:  ).

Je t'avais donné juste cette soluce si jamais tu pouvais utiliser un truc genre vmware.

Mais bon, vu que sous cygwin, proxytunnel est bien geré...

Par contre, je comprend pas trop le besoin d'avoir un apache de l'autre côté. J'en ai pas et ça fonctionne très bien pour moi.

Je tappe sur le port 443 de mon routeur qui le redirige direct sur le ssh de mon serveur.

----------

## Desintegr

Le serveur Apache ne joue qu'un rôle de proxy HTTP (mod_proxy).

 *engil wrote:*   

> J'ai du mal à être convaincu par la version avec un serveur apache chez moi, j'ai déja un apache mais qui ecoute uniquement en local, et au niveau sécurité il faudrait que j'étudie ça un peu plus avant d'ouvrir mon serveur.

 

 *nico_calais wrote:*   

> Par contre, je comprend pas trop le besoin d'avoir un apache de l'autre côté. J'en ai pas et ça fonctionne très bien pour moi.

 

Si le pare-feu de ton entreprise filtre les paquets au niveau applicatif, il va remarquer que tu utilises du SSH et pas du HTTP. La connexion sera bloquée !

Tout simplement, ton admin réseau n'est pas trop strict, c'est pour ça que ça fonctionne.

Voici la chaîne de connexion complète :

Ordinateur du bureau -> Application cliente X (Firefox, Pidgin, etc.) -> Putty (qui agit en tant que proxy SOCKS et comme client ssh) -> Proxytunnel -> Proxy HTTP de l'entreprise -> INTERNET -> Serveur Apache (mod_proxy) -> Serveur SSH -> INTERNET -> Serveur X (serveur HTTP, IRC, etc.)

La connexion entre le serveur X et son application cliente est encapsulée dans du SSH puis dans du HTTP.

----------

## gbetous

Salut !

Moi aussi j'utilise bcp putty depuis le boulot, et aussi via le port 443, pour la meme raison que toi, donc no problemo. Je pense que ton pb se situe sur le proxy. Tu dis que tu utilises ton login et passwd windows, mais es-tu sur que c'est bien ça qu'il faut ?

C'est bien simple, regarde ton browser web comment il est configuré et fait pareil (à moins qu'il soit configuré en "automatique" auquel cas il faut ruser un peu)

----------

## xaviermiller

 *Desintegr wrote:*   

> Si le pare-feu de ton entreprise filtre les paquets au niveau applicatif, il va remarquer que tu utilises du SSH et pas du HTTP. La connexion sera bloquée !

 

Salut, tu en connais qui le font ?

----------

## Desintegr

 *XavierMiller wrote:*   

> Salut, tu en connais qui le font ?

 

Des pare-feu ou des entreprises ?

Si tu parles des pare-feu, tu peux par exemple utiliser l7-filter qui est un pare-feu fonctionnant sur la couche  application.

Il est capable de filtrer de très nombreux protocoles dont SSH.

Si tu parles des entreprises, je ne sais pas car je suis encore étudiant et je n'ai pas testé très souvent.

Pour l'instant, j'ai déjà testé une fois et un simple SSH sur le port 443 fonctionnait.

Il faudrait que j'essaye sur les ordinateurs de l'Université pour voir.

D'ailleurs, si ton admin réseau était beaucoup plus méticuleux, il t'aurait déjà demandé pourquoi tu te connectes uniquement sur une seule IP en SSH en permanence. Et comme tu n'aurais pas pu lui donner une raison valable, il aurait déjà ajouté l'IP à la blacklist du pare-feu.

----------

## xaviermiller

non car on est une boite d'info, qu'on doit se connecter à gauche et à droite, et que mon IP est dynamique, et que je me connecte rarement à la maison (faut bosser, quand même, non ?)

----------

## Zazbar

 *XavierMiller wrote:*   

>  *Desintegr wrote:*   Si le pare-feu de ton entreprise filtre les paquets au niveau applicatif, il va remarquer que tu utilises du SSH et pas du HTTP. La connexion sera bloquée ! 
> 
> Salut, tu en connais qui le font ?

 

Ma boite fait ce genre de filtrage .... SSH sur le port 443 ne fonctionne pas, je dois utiliser corkscrew  :Smile: 

----------

## engil

Je fais remonter pour poser une question --

Le proxytunnel ça marche, quand je lance juste la commande ça se connecte bien, le tunnel est ouvert

```

>proxytunnel -p proxy-internet.***.fr:8080 -N -d @IPFbx:443 -v

proxy-internet.***.fr is 192.168.62.103

Connected to proxy-internet.***.fr:8080

Tunneling to @IPFbx:443 (destination)

Connect string sent to Proxy: 'CONNECT @IPFbx:443 HTTP/1.0

Proxy-Connection: Keep-Alive

'

DEBUG: recv: 'HTTP/1.1 200 Connection established

'DEBUG: recv: '

'Starting tunnel

In closeall

Tunnel closed

Goodbye

```

Donc a priori la connexion est OK, c'est après que ça se gate.

```

>plink -v -load fbx

Looking up host "@IPFbx"

Starting local proxy command: proxytunnel -q -p proxy-internet.***.fr:8080 -N -d @IPFbx:443

Server unexpectedly closed network connection

FATAL ERROR: Server unexpectedly closed network connection

```

Est-ce que ça pourrait être le firewall qui bloque ?

Edit : en version graphique, l'erreur est "read error from local proxy command", mais ma commande proxytunnel me paraît OK ...

----------

