[SSH] Problème FTP par tunnel SSH via Putty

[Résolu/Fermé]
Signaler
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
-
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
-
Bonjour,

J'essaye depuis quelques jours de mettre en place un serveur FTP/OpenSSH sous Windows 2000. En effet, j'ai cherché des solutions "clé en main" de serveur SFTP ou SCP, mais je n'ai rien trouvé. Je suis parvenu à faire du SFTP avec Cygwin+OpenSSH (coté serveur) et WinSCP (coté client), mais impossible de gêrer des comptes d'utilisateurs facilement. Il faut "chrooter" les répertoires d'utilisateurs, et je n'y suis pas parvenu (aucune solution pour Cygwin, la seule solution que j'ai trouvée m'aurais forcé à faire tourner le serveur sous Debian ou Mandriva).

Je me suis donc lancé dans le tunneling SSH. Mon idée (malgré les difficultés rencontrées sur de nombreux post) est donc d''établir une connection entre un serveur Filezilla Server et un client Filezilla en passant par un tunnel SSH. De cette facon, je pourrais mettre en palce une politique de comptes auquels seront attribués des répertoires spécifiques.

Mon architecture:

Serveur ---- Réseau1 (192.168.1.0) ------|Pare-Feu|-------- Réseau2 (192.168.1.0) ---- Client

Problème: très peu d'infos sur le net pour faire du transfert de fichier sécurisé sous Winrose. Mon tunnel SSH se crée bien lorsque j'initialise Putty coté client, j'ai accès à la console à distance. J'ai également forwardé le port 21 du client par le tunnel: la connection FTP s'initialise bien via le canal de controle, la connection s'établit jusqu'à 150 Opening data channel for directory list.. Je présume qu'après, il essaye d'établir un canal de données par le port 20 et qu'il n'y parvient jamais.

Lorsque je forward le port 21 par le tunnel SSH, dans putty je vais dans Connection/SSH/Tunnels, et j'ajoute un tunnel de la manière suivante:
Add new frowarded port:
Source Port: 21
Destination: 127.0.0.1:21
[X] Local [ ] Remote [ ] Dynamic
[X] Auto [ ] IPv4[ ] IPv6


Comment faire pour que le traffic du port 20 de la machine distante passe par le tunnel SSH, de la même manière que le traffic du port 21 de la machine locale part par le tunnel vers la machine distante? J'ai tenté l'option "Remote", mais soit ce n'est pas la solution, soit je mets les mauvais paramètres. J'ai également fait des essai avec la commande ssh, mais je ne suis jamais parvenu à l'utiliser correctement apparement.

Un petit coup de pouce serait vraiment des plus utiles, merci.

10 réponses

Messages postés
540
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
28 décembre 2008
249
regarde du coté de copssh, ca facilite la vie notament au niveau de la gestion des utilisateurs, chacun à son répertoire.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
Je suis en train de me pencher sur la solution que tu proposes: elle m'a effectivement l'air intéressante (heureusement que je gêre un peu l'anglais). Si j'y parviens de cette façon je ne manquerais pas de poster la solution, car soit j'ai mal cherché, soit il n'y a vraiment pas beaucoup de solutions gratuites viables d'exposées sur le net.

Merci en tout cas.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
Qu'entends tu par "chacun son répertoire"? Je pensais que chaque utilisateur avait un répertoire duquel il ne pouvait pas s'échapper, ce qu'on appelle aussi une cage ou jail. Il lui serait donc impossible de lire ou corrompre les données d'un autre utilisateur.

Ce que copSSH semble faire, c'est proposer une interface graphique pour réaliser ce que je faisais en ligne de commande (du genre récupérer les compte locaux windows pour en faire des comptes Cygwin). Mais chez moi en tout cas, à chaque nouvel utilisateur se crée effectivement un nouveau répertoire /home/user, mais user peut sans problème remonter l'arborescence jusqu'à la racine, ou encore accéder au répertoire d'un autre utilisateur.

Je ne suis pas sur de moi et ca m'arrangerais mêm de me tromper! Si c'est le cas, merci de me tenir au courant.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
Bah je me suis trompé ^^. Voir plus bas pour plus d'infos.
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 549
Note: Le FTP ne peut pas se tunneller facilement par ssh.

J'explique: Voilà normalement comment fonctionne le FTP:

Le client se connecte sur le port 21 du serveur et s'authentifie.
Le serveur va se connecter sur le port 20 du client pour envoyer les données.

C'est cette seconde connexion qui ne pourra pas passer dans le tunnel ssh.


Pourquoi ne pas tout simplement utiliser les fonctions de transfer de fichier sécurisés intégrées au serveur ssh ?
(sftp).

ça marche remarquablement bien.


Si tu veux absolument utiliser le FTP, il faut configurer ton client FTP en mode "passif", ce qui n'ouvre pas de connexion du serveur vers le client mais utilise la connexion TCP initiée par le client pour envoyer les fichiers.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
Tu confirmes ce que je supposais concernant la connexion en retour, ce n'est pas possible. Pour moi en tout cas. ^^

J'avais donc bien essayé en mode "passif", mais je ne comprends pas vraiment les différentes options que propose Filezilla:

External Server IP Address for passive mode transfers:
(x) Default
( ) Use the following IP: xxx.xxx.xxx.xxx
( ) Retrieve external IP address from: http://...

blablabla...

[ ] Don't use external IP for local connections
[ ] Use custom port range: ... - ... (1 - 65535)


Dans quel cas le mode "passif" est-il activé ou pas? Quelles options choisir? J'ai bien fait quelques essais sans succès.


Alors pourquoi ne pas utiliser SFTP? Car je ne suis pas chez moi et que je dois tourner sous windows. Du coup, je dois utiliser Cygwin pour faire tourner openSSH.
Poblème: par défaut, aucune gestion de droit, tout le monde accède à tout le répertoire Cygwin en SFTP. J'ai donc appris qu'il fallait "chrooter" le "bordel", j'ai donc essayé un moment, en vain. Les solutions que j'ai tenté d'adapter s'adressaient à des serveur Debian ou Mandriva (linux creation environnement openssh chroot ), mais je ne suis pas parvenu à mes fins avec Cygwin. Abandon.

Voila pourquoi je suis revenu vers un serveur Filezilla: pour pouvoir gêré facilement des comptes d'utilisateurs. Mais j'ai rencontré les problèmes que vous connaissez. Je suis donc en train de tourner avec copSSH que l'on m'a conseillé et qui normalement gêre les droit en fonction de la politique appliquée sur la machine serveur.
Problème: bah en fait non. j'ai du mal à ce que les droit qui ont bien effet en local, prennent également effet à distance via WinSCP... Ou je fais quelque chose de travers, ou le problème est le meme qu'avec openSSH seul: chaque fois que je me log, l'utilisateur courrant devient propriétaire (d'après mes ls -l) et peut donc accéder à tout tranquillement. Je vais encore essayer quelques bidouilles.


Ca va faire quelque jour que j'me casse la tête, ça commence à me... Je viens de tomber sur WinSSHD licence perso à 40$... non c'est bon. Je tiendrais le coup jusqu'au bout. Je trouverai. N'hésitez pas à réagir!
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 549
ouaips... installer un serveur ssh sous Windows, c'est vraiment prise de tête :-(

Bon courage.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
Au temps pour moi, après quelques essais avec différentes stratégies de compte, je suis arrivé à mes fins: avec WinSCP, chaque user est confiné dans son répertoire propre.

En fait, lorsque WinSCP se connecte au serveur SSH, et grâce à copSSH (pas possible avec la simple combinaison Cygwin + openSSH), les droits respecté sont les droits Windows, qui sont donc facile à administrer tant que l'on tourne sur un système de fichier NTFS (clic droit sur le répertoire Propriétés>Sécurité avec les droits admin bésûr). J'ai donc exactement le résultat escomptér.

Mais il subsiste quelques doutes dans ma tête de newb'. En effet, j'ai installé copSSH sur un DD séparé (E:). J'ai donc E:\copSSH\bin\, doc\, etc\, home\, tmp\, var\ comme sous un système linux normal. Or il est obligatoire de laisser accès à ces répertoires (sauf /home pour ne pas permettre à un utilisateurs de voir les repertoires des autres utilisateurs) à tous les utilisateur, sous peine que la connexion au serveur SSH échoue. Est-ce que ca ne représente pas un risque potentiel si on une personne mal intentionnée se connecte avec Putty?

Voici le contexte à l'initiamlisation de la connexion, que ce soit avec Putty ou WinSCP:
L'utilisateur se trouve dans E:\copSSH\home\user\. Il n'a pas les droit sur "home" et ne peut donc pas remonter d'un répertoire. Par contre il a les droits sur les autres répertoires linux dans E:\copSSH\ que j'ai listés plus haut. Avec Putty, j'ai tenté cd /, cd ../.., cd.., je n'arrive pas à remonter, mon user reste dans son répertoire "home".
Y a-t-il d'autres moyen simples d'y parvenir? Pour par exemple pourrire les répertoire en vue d'un déni de service.

Encore une chose, si je donne un chemin en paramètre d'un cd, au lieu de me donner une erreur, j'ai un ">" qui m'invite à passer une commande. De quoi sagit-il?
Exemple:
user@machine ~
cd etc\
>ls
-bash: cd: etcskells: No such file or directory

C'est un exemple de tentative d'accès à etc\ qui n'a pas réussi. Mais j'aimerais savoir pourquoi j'ai une invitation ">" alors que je pensais avoir directement un messager d'erreur.
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 549
Désolé, je n'ai pas trop creuse le mapping des droits entre POSIX/cygwin/Windows.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
Pas de problème, l'important c'est que j'y sois parvenu. Etant donné que ce n'est qu'un exercice de style, je voudrais identifier les risques, mais le problème ne se posera jamais dans la réalité.

Merci en tout cas pour ton aide, ainsi que pour toutes tes autres interventions judicieuses.
Salut,

Je pense qu'il faudra que j'ouvre un nouveau topic, mais j'expose tout de même mon cas :

j'ai un pc portable connecté à internet via un phone en 3g, et je voudrais installer des softs qui sont dispos sur le net en ftp (ou qui, pour cause de proxy qui bloque me refuse pas mal de ces fichiers que je voulais installer) je ne veux pas peerer !
de l'autre côté, un Macintosh relié à l'ADSL........
vous devinez déjà la suite !

client (limité aux seuls ports (80 et 443) [browser firefox only] --- proxy de l'opérateur 3g --- [tunnel vpn ?] [ssh ?] - [sftp ?] - [ ? ] --- serveur macintosh permettant via une page http ou https (plutôt 2° soluce...) l'accès aux ftp distants (champs texte "entrer l'url du fichier cible" et un bouton ["GET FILE ! "]......

pour toute info, aide, partage d'infos, merci de poster ou mailer.

de mon côté, je continue mes recherches.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
Euh ben disons que je suis mauvais aux devinettes et que j'aurais préféré que tu résumes clairement ton problème :)

Et puis d'abord je vais le dire à ton opérateur! :) Nan bon ok j'avoue, je me fais plaisir aussi en modem 3G OTA...

Sauf qu'effectivement, seuls les ports 80 et 443 sont ouverts pour les forfaits 3G grand publique. Il faut un accès "pro" pour disposer de ports type SSH(22) ou FTP(21). Le seul moyen, c'est effectivement de disposer d'un serveur HTTPS qui te permette éventuellement d'entrer une adresse ftp://... et de télécharger le fichier mais c'est un peu tordu.

Il y a éventuellement la solution https://www.logmein.com/ que je n'ai pas testé mais qui permet apparemment de faire du "remote desktop" à travers leur site. J'ai aussi remarqué qu'un serveur Ultra VNC permet désormais de prendre la main à distance par un applet Java (donc par HTTPS) et non plu par client VNC exclusivement. Il faut que ton serveur ne soit pas trop sensible car je ne connais pas le niveau de sécurité d'une telle solution exposée à internet.

Une dernière bidouille si c'est pour faire du DL sur des sites comme Télécharger ou Clubic, c'est d'utiliser Clubic: lorsque tu lances le téléchargement, tu peux choisir ton serveur à la main via un menu déroulant. Là, il y en a quelques uns en FTP mais il en reste toujours un ou deux en HTTP en bas.

Voila, je ne suis pas sur de répondre à ta question, mais je l'espère.

A bientot.
Messages postés
862
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 octobre 2011
108
PS: t'as de la chance, mon dernier message sur ce poste a plus d'un an!! ^^