J'ai deux hôtes distants.
host1-> 10.3.0.1
host2-> 10.3.0.2 exécutent
tous deux un serveur ssh.
Le serveur ssh écoute sur le port 22 de l'hôte1 et sur le port 6969 de l'hôte2. Maintenant, en utilisant ma machine locale, je dois copier quelque chose de host1 à host2 sans me connecter ni à host1 ni à host2 via ssh. Quelque chose comme,
scp [email protected]:/path/to/file [email protected]/path/to/file
Comment puis-je faire cela, veuillez noter que les deux hôtes utilisent des ports différents pour ssh.
-P
indicateur existe pour spécifier le port à utiliser, ssh n'a aucun comportement défini sur la manière de spécifier un port par hôte ...Réponses:
Dans le passé, la façon dont
scp
fonctionnait la copie de fichiers entre systèmes distants ( naïvement ) était très gênante: si vous écriviez, par exemplescp
ouvrirait d’abord unessh
session sur remote1, puis s’exécuteraitscp
de là vers remote2. Pour que cela fonctionne, vous devez configurer les informations d'identification d'autorisation pour remote2 sur remote1.La façon moderne de le faire (au contraire, "moderne" parce qu'elle a été mise en œuvre il y a seulement quelques années et que tout le monde n'a peut-être pas la
-3
capacité de le fairescp
) nécessite deux étapes. La première étape nécessaire consiste~/.ssh/config
à configurer toutes les options pour la connexion à distance à distance1 et à distance2, comme suit:De cette façon, il devient possible de transmettre toutes les options nécessaires à la commande sans ambiguïtés : par exemple, si nous avions dit sur le port 2222 d'utilisation de la CLI sans la configuration ci-dessus, il aurait été difficile de savoir s'il s'agissait de remote1 ou de remote2 , et de même pour le fichier contenant les clés cryptographiques. De cette façon, le CLI reste ordonné et simple.
Deuxièmement, utilisez l'
-3
option suivante:L'
-3
option indiquescp
d'acheminer le trafic via le PC sur lequel la commande est émise, même s'il s'agit d'une 3ème partie du transfert. De cette manière, les informations d'identification de l'autorisation ne doivent résider que sur le PC émetteur, le tiers.la source
~/.ssh/config
fichier est pris en charge: cloud.google.com/compute/docs/gcloud-compute mais je ne pense pas que AWS dispose du même support-v
.La dernière fois que j'ai essayé cela, scp n'était pas capable de faire ça. Votre ligne de commande a l'air bien. Cette solution de contournement fonctionnera:
la source
Dans mon cas, je faisais une copie à distance, sans
-3
argument. Le port indiqué avec le paramètre '-P' fonctionne avec le premier serveur, mais le port 22 est utilisé avec le deuxième.La solution consiste à éditer le
/etc/ssh/ssh_config
fichierserver1
et à ajouter ces lignes:De cette manière, le port 1234 est utilisé pour les deux. Cela pourrait être différent aussi.
Cette solution offre un meilleur débit que les solutions précédentes, car la communication est directe.
la source
La source et la cible peuvent être spécifiées en tant qu'URI sous la forme scp: // [utilisateur @] hôte [: port] [/ chemin]
afin que vous puissiez courir:
la source