Bonjour,
j'utilise actuellement la commande suivante pour créer un tunnel SSH depuis des PC externes (www) vers mon serveur :
ssh -R 330X:localhost:22 -D 7979 mon_user@mon_serveur -p 444 -N
X vaut de 1 à 99, ce qui veut dire que j'autorise 99 machines à se connecter à mon serveur via SSH.
Ainsi, depuis le serveur, si je fais : ssh -p 330X user@localhost
Je peux me connecter à la machine n°X par ssh.
Le serveur est accessible depuis n'importe quel PC sur mon réseau interne.
J'aimerai pouvoir transférer des fichiers sur la machine externe directement depuis un des PC sur mon réseau interne.
Je pensais que si je faisais :
scp -p 330X le_fichier user@mon_serveur:./
ça fonctionnerait. Hors j'ai connexion refusée.
Est-ce que quelqu'un pourrait m'expliquer comment faire ? Si c'est faisable ? Ou si j'en demande trop ?
Merci d'avance
Sylvain
# déjà ssh
Posté par matthieu bollot (site web personnel, Mastodon) . Évalué à 2.
avant le scp, essaie d'avoir le ssh accessible en une seule commande.
Je dis au pif mais en l'occurence je pense que le problème c'est que tu peux pas faire ssh mon_serveur -p 330X parce que c'est disponible que sur le localhost de ton serveur.
Tu peux peut-être remplacer localhost par ton ip externe ce qui devrait marcher. Sinon tu peux aussi rajouter un proxy dans ton ~/.ssh/.config, un truc de ce style :
à partir de là, tu pourras faire ssh machineX et ça passera par ton serveur, scp marchera aussi du coup.
[^] # Re: déjà ssh
Posté par sygirard . Évalué à 1.
je n'ai pas d'IP pour les machines externes … car elles sont chez des clients, dans leur réseau entreprise, derrière un routeur/firewall.
D'où les tunnels SSH … cela me permet via ShellInABox et NoVNC sur un site web d'avoir accès à la machine pour faire du support sans demander une modification des règles de sécurité chez les clients.
Oui, je redirige le port 22 et le port 5900.
Je voulais rediriger le port du ftp, comme ça je mettais net2ftp dans le site et mon problème était réglé.
Sauf que je bride ftp à un seul répertoire, pour éviter toute intrusion depuis le réseau usine (ou autre) chez les clients.
Puis aujourd'hui, seul un automate nécessite ftp pour pouvoir réaliser ses mise à jour.
Un sftp depuis mon serveur, de la manière suivante, fonctionne très bien :
sftp -o Port=330X user@localhost
Maintenant il faut que j'arrive à faire en sorte que la meme commande (ou ssh ou scp) que je fais depuis un autre PC arrive sur le serveur et soit redirigée vers la machine externe.
Précision supplémentaire, seul un user spécifique du serveur peut se connecter à distance vers les machines externes à cause du tunnel créé avec ce user.
[^] # Re: déjà ssh
Posté par matthieu bollot (site web personnel, Mastodon) . Évalué à 2.
Tu répondais à moi ou à olivier en dessous ?
Moi je t'ai donné deux solutions : remplacer localhost par l'adresse ip externe de ton serveur ou ajouter dans le .config de ton client ssh (donc ta machine perso à toi) un proxy pour que ça fasse automatiquement ssh serveur / ssh serveur surlebonport
Et donc ça c'est quoi qui te va pas en vrai ?
[^] # Re: déjà ssh
Posté par sygirard . Évalué à 1.
je faisais une réponse à toi au départ, puis j'ai dériver sur la réponse d'olivier car j'étais en train de faire les tests en même temps. Désolé ..
J'ai pas bien compris à quel endroit tu veux que je remplace locahost par adresse IP de la machine. Dans la requete ssh qui crée le tunnel ?
Et vu que l'IP de la machine externe sera une IP appartenant au réseau interne du client, je pense pas que ça m'aidera .. et utiliser l'adresse IP du routeur du client non plus …
Après même réponse pour le proxy dans mon client ssh sur mon poste. L'IP de la machine ne me servira pas. Et de toute façon je ne l'ai pas.
Ou alors j'ai pas vraiment compris comment fonctionne ce que tu veux me faire faire.
Je cherche également en parallèle un client SFTP que je pourrai intégrer à mon site. Ça m'aiderai tout aussi bien je pense.
Désolé si je me suis mal fait comprendre …
S'il faut plus d'explication car je suis pas clair tu me dis ..
[^] # Re: déjà ssh
Posté par matthieu bollot (site web personnel, Mastodon) . Évalué à 2.
cf réponse de Neox qui est peut-être plus explicite mais oui c'était remplacer localhost dans la requête qui crée le tunnel par l'ip externe de ton serveur
Idem pour la config du proxy dans ~/.ssh/config, à aucun moment tu ne mets l'adresse du "client" enfin ton client, la machine à accéder que tu connais pas l'adresse, tu ne mets que l'adresse du serveur.
Je ne m'exprime peut-être pas bien, mais clairement ce que tu veux faire ça correspond à faire machine A --> machine B --> machine C sachant que machine B et machine C c'est chez toi ça correspond à ton serveur donc la même machine mais sur 2 ports différents.
[^] # Re: déjà ssh
Posté par NeoX . Évalué à 3.
comme evoqué par les autres, il faut verifier que le port 330X soit en ecoute sur l'IP externe de ton serveur de rebond, et non pas uniquement sur 127.0.0.1 (localhost).
ca se verifie en faisant
netstat -puant | grep 330X
sur la machine de rebond[^] # Re: déjà ssh
Posté par sygirard . Évalué à 2.
Qu'est ce que tu appelles ma machine de rebond ? Mon serveur ?
Dans ce cas j'ai ça :
[^] # Re: déjà ssh
Posté par NeoX . Évalué à 3.
et voila ta reponse ;)
ton port 3301 n'est ouvert que sur 127.0.0.1 (la machine de rebond elle meme)
donc seule la machine de rebond peut se connecter dessus.
tu ne peux donc pas te connecter depuis une autre machine, sur rebond:3301 pour atteindre le site distant.
pour cela il faudrait que le port soit branché sur l'IP de la machine de rebond :
- A.B.C.D:3301
ou sur toutes les IPs de la machine
- 0.0.0.0:3301
à voir si c'est faisable en faisant un truc comme ca
ssh -R A.B.C.D:330X:localhost:22 -D 7979 mon_user@mon_serveur -p 444 -N
ou
ssh -R 0.0.0.0:330X:localhost:22 -D 7979 mon_user@mon_serveur -p 444 -N
[^] # Re: déjà ssh
Posté par sygirard . Évalué à 2.
j'ai essayé ça :
et ça aussi du coup :
Mais ça change rien. J'ai toujours :
tcp 0 0 127.0.0.1:3301 0.0.0.0:* LISTEN 59691/sshd: name
[^] # Re: déjà ssh
Posté par sygirard . Évalué à 3.
J'ai activé ça dans /etc/ssh/sshd_config sur mon serveur :
GatewayPorts yes
du coup maintenant j'ai ce que tu me disais :
tcp 0 0 0.0.0.0:3301 0.0.0.0:* LISTEN 64487/sshd: name
Et cela sans mettre 0.0.0.0:3301:localhost:22 .. juste ce que j'avais 3301:localhost:22 suffit
Et maintenant TOUT BAIGNE !!!!!!!!!!!!!!!!!!!!! EXTRA !!!!!!!!!!!!!
Depuis mon poste, si je tape :
ssh -p 3301 user_machine_distante@mon_serveur
Je suis connecté à ma machine distante.
ET le plus beau … c'est que j'ai également accès en SFTP avec FileZilla depuis mon … et la c'est tout simplement MAGIQUE !!!!
Merci de m'avoir mis sur la voie.
Merci à tous.
P…. suis content
Euh … comment on ferme un topic ? Merci
# sftp
Posté par Olivier (site web personnel) . Évalué à 2.
sftp est fait pour transférer des fichiers. Il fait parti du package client ssh.
Pour faire du sftp avec un port non standard :
sftp -o Port=330X user@mon_serveur
La seul contrainte est d'avoir le serveur sftp d'activé sur la machine à distance. Pour une Debian/Ubuntu, le /etc/ssh/sshd_config doit avoir :
Subsystem sftp /usr/lib/openssh/sftp-server
# c'est pas marseille mais Marseille
Posté par KiKouN . Évalué à 3.
C'est très subtile. La commande scp se voulant être très proche de la commande cp ne pouvait utiliser l'option "-p" pour définir le port car il est réservé pour préserver les métadonnées d'un fichier lors la copie.
Toutefois, les développeurs, n'étant, ma fois, pas si cons, ont eu l'idée de faire l'option "-P" pour définir le port. Pouvoir définir le port pour une application réseau étant le b.a.-ba.
Tout ceci est fort bien expliquer dans la page de manuel de la commande scp.
Ce qui donne pour ta commande:
scp -P 330X le_fichier user@mon_serveur:./
[^] # Re: c'est pas marseille mais Marseille
Posté par sygirard . Évalué à 1.
J'ai "connection refused" quand je fais ça
# Un peu plus d'explications
Posté par sygirard . Évalué à 1.
Je vais essayer d'expliquer un peu mieux.
J'ai une machine chez un client (n'importe où dans le monde) connectée au réseau entreprise de ce même client, réseau qui à accès à internet.
Sur cette machine, il existe l'utilisateur user_machine.
J'ai un serveur en France, connecté au réseau entreprise de ma société, et accessible depuis internet.
Sur ce serveur il existe un user nommé user_serveur.
Ma machine chez le client crée un tunnel ssh vers le serveur en utilisant l'utilisateur user_serveur. En faisant la redirection des port 22 et 5900. Le tout par le port 444. Et j'utilise les socket également pour pouvoir faire fonctionner un chat (-D 7979). Ce qui donne la commande suivante en imaginant que la machine est la première connecté au serveur (X=1)
ssh -R 3301:localhost:22 -R 5901:localhost:5900 -D 7979 user_serveur@mon_serveur -p 444 -N
Ensuite, si j'ouvre un terminal sur mon serveur, je peux faire ce que je veux (ssh, scp, sftp) avec les commandes suivantes que je sais utiliser en fouillant dans les MAN de chacune d'entre elles :
ssh -p 3301 user_machine@localhost
scp -P 3301 le_fichier user_machine@localhost
sftp -o Port=2201 user_machine@localhost
Mais cela fonctionne uniquement avec l'utilisateur user_serveur puisque le tunnel ssh a été créé avec cet utilisateur. Avec un autre user du serveur cela ne fonctionne pas. Ce qui est très bien pour moi.
Voila ce que j'ai si j'essaie de le faire depuis un autre utilisateur du serveur :
Maintenant, je me situe sur mon poste. Il est sur le réseau interne de mon entreprise. J'ai accès donc en interne au serveur. Je n'ai ni l'utilisateur user_serveur, ni user_machine sur ma machine.
Je voudrais envoyer un fichier, ou en récupérer un, sur la machine chez le client. Pour cela il faut que j'utilise le user qui est sur la machine, soit user_machine, sachant que ce user n'existe pas sur le serveur.
En gros je voudrais traverser mon serveur comme s'il n'existait pas.
Après je suis pas un expert dans le domaine, c'est pour ça que je requière voter aide.
Merci
[^] # Re: Un peu plus d'explications
Posté par lolop (site web personnel) . Évalué à 2. Dernière modification le 23 avril 2015 à 13:51.
Dans
.ssh/config
, en utilisant uneProxyCommand
, tu indiques à ssh par où passer (par ton serveur intermédiaire) pour atteindre tes machines cibles. Tu n'as ainsi plus à le spécifier pour chaque commande basée sur ssh.Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Redirection-de-ports-avec-ssh
Posté par fahdyezz . Évalué à 1.
Bonjour à tous
Je suis un peu dans le même cas que sygirard et j'ai beau relire vos explications, je reste un peu perdu. Je m'explique:
J'ai créé mon-adresse.no-ip.org qui doit arriver via P:22 redirigé P:6xxx sur une RaspberryPi en Raspbian qui sera le serveur de rebond vers un serveur final (actuellement UbuntuServeur - ssh sur P:22) sur lequel sont chrootés mes "clients" distants (sur /home car serveur final dédié pour l'instant), qui ne feront que du sftp. Ces deux serveurs sont physiquement chez moi.
Je pense avoir compris le principe, mais je mélange toujours les machines lors de la saisie des diverses commandes. J'essaie d'installer tout ça de mon win7 avec Putty, tests avec Filezilla, et SecurityKiss Tunnel pour les accès extérieurs.
Donc pour l'instant,
sur le serveur final:
création des users chrootés avec leur fichier .ssh/config contenant:
Host 192.168.1.60 serveur-final
User toto
Hostname serveur-final
ProxyCommand sftp -q -W %h:%p:%r mon-adresse.no-ip.org
modification du fichier ssh_config avec ajout de:
ProxyCommand sftp -q -W %h:%p:%r mon-adresse.no-ip.org
modification du fichier sshd_config avec:
Subsystem sftp internal-sftp
.....
ChhrootDirectory %h
.....
sur le serveur de rebond:
pas d'users chrootés
fichier sshd_config:
Subsystem sftp /usr/lib/openssh/sftp-server
fichier ssh_config non modifié
Configuré de la sorte, j'arrive uniquement à me connecter en sftp via Putty en interne du serveur de rebond sur le serveur final, et pour Filezilla seulement si je mets Hôte: serveur final Port:22
J'ai testé divers paramétrages et je m'y perds un peu (beaucoup).
En outre, le peu de fois où ça marche en partie, je vois le nom du serveur final ainsi que les commandes qui passent (privatekey.ppk) pour les autres users chrootés dans la fenêtre supérieure de Filezilla.
Pouvez-vous m'aider?
Merci d'avance,
fahdyezz.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.