Je souhaite copier des fichiers d'un ordinateur distant (W) vers un ordinateur hôte privé (P) via scp. Comme je ne peux pas me connecter directement à la machine W, j’utilise un tunnel SSH sur deux machines différentes avec le port 22. Ce que je voudrais faire est de me connecter à la machine W et à partir de là faire un transfert de fichier scp vers la machine P, le problème est que P est caché dans un réseau, donc je ne peux pas spécifier une adresse IP hôte distante lorsque je suis connecté à la machine W. Existe-t-il une solution pour cela ?? J'arrive à le faire quand je suis connecté à la machine P, mais je ne veux pas se rappeler le chemin du fichier chaque fois que je copie un fichier.
1
W -- ? -- ? -- P
?
?W -- M1 -- R1 -- M2 -- P
? Ou quel est exactement le chemin de réseau entre W et P?Réponses:
Après avoir clarifié votre configuration comme indiqué ci-dessus, votre système ressemble à ceci:
R
est un routeur NAT qui n'autorise que les connexions depuisP
àM1
, mais pas l’inverse et tous les nœuds doivent être utilisés pour établir une connexion.Solution 1
Votre seul vrai problème est le routeur
R
vous n’avez aucun contrôle, vous devez donc en quelque sorte établir un tunnel pour permettreW
se reconnecter. La solution la plus simple serait d'avoirP
établir une connexion SSH pourM1
et établir un port inversé là-bas.Vous pouvez ensuite configurer un second tunnel SSH à partir de
W
àM2
transférer les paquets locaux vers le port transféré sur le port inverse surM1
, qui peut à son tour être utilisé pour établir une connexion SSH en tunnel entreW
àP
.Solution 2
Maintenant, cela ajoute une certaine complexité à l’ensemble de la configuration, ce qui la rend assez sujette aux erreurs. Une meilleure solution consisterait à établir une connexion VPN entre
W
etM1
,P
etM2
et entreM1
etM2
. Ensuite, vous pouvez établir un routage en utilisant une plage d'adresses privée allant deW
àP
sur ces trois tunnels. Pour que cela fonctionne, vous devez avoir un accès root à la fois.M1
etM2
ET vous devez configurer des pare-feu appropriés afin que personne de l'extérieur n'entre dans votre VPN.Il existe bien sûr d’autres solutions également, mais la solution réelle peut ensuite être adaptée à vos outils.
la source
W
àP
avecssh -l userame -p 2210 localhost
. Il me reste une question à poser: comment puis-je utiliser scp, c.-à-d. Passer le nom d'utilisateur du port, etc., je n'ai pas réussi à le faire fonctionner? J'ai essayé quelque chose commescp parameter.ini -p 2210 username@localhost:~/parameter2.ini
après trois tentatives de mot de passe, je reçois le message suivantPermission denied (publickey,keyboard-interactive). lost connection
scp
utilise une capitaleP
pour le port, doncscp -P 2210 file user@localhost:~/destfile
. Je ne sais vraiment pas pourquoissh
etscp
sont incohérents là-bas - probablement pour des raisons historiques, comme toujours lorsque vous ne pouvez pas expliquer quelque chose avec des arguments;)
ssh: connect to host localhost port 2210: Connection refused lost connection
Je recommanderais de monter le système de fichiers distant localement en utilisant
sshfs
. Je ne connais pas les détails de votre configuration, mais je vais vous donner un exemple. J'ai configuré un tunnel via un serveur distant (R1) vers un second serveur inaccessible (R2) sur le réseau de R1 avec cette commande:Je peux maintenant me connecter à R2 comme suit:
Je peux aussi utiliser
sshfs
monter localement un répertoire à partir de R2:J'ai essayé ceci en utilisant un tunnel à travers un pas deux serveurs distants mais je ne vois pas pourquoi il ne devrait pas fonctionner avec 3 ou plus tant que le tunnel a été correctement configuré.
Ce n'est pas exactement ce que vous avez demandé, mais cela devrait servir de solution de contournement. Une fois le système de fichiers distant monté localement, vous pouvez utiliser des fonctions simples.
cp
copier des fichiers de / vers.la source
autofs
(voir ici ) avec lesoft
option.sshfs
n'a rien à voir avec ça ...scp
fonctionne très bien une fois que vous configurez le tunnel avecssh -fN