Két távoli csomópontom van, amelyeket fájlokat próbálok egymásról küldeni.
scp remote1:~/testSCP [email protected]:~/
~/ssh/config
be van állítva a helyi gépemen, ezért alapértelmezés szerint a 2222
portot használja.
De a remote1 alapértelmezett ssh portja 22
-re van állítva az ssh config-ban a 2222
port helyett. Tehát, hogy bármilyen külső kapcsolat az ssh-n keresztül, alapértelmezés szerint a 22
portot használja.
Kipróbáltam a következőket, amelyek nem működtek:
scp -P 2222 remote1:~/testSCP [email protected]:~/
Kipróbálta a következőket is, amelyek szintén nem működtek:
scp remote1:~/testSCP -P 2222 [email protected]:~/
Mindkettőhöz a következő hibát kaptam:
ssh: connect to host 10.0.1.10 port 22: Connection refused lost connection
Ez igaz, mivel a 10.0.1.10
a 2222
portot használja, és nem a 22
.
Hogyan adhatom meg a remote1-et a 2222
port használatához, amikor fájlokat akarunk küldeni a következőhöz: (remote2) a következőtől: remote1
?
Frissítés
Miután megpróbálta
scp -3 remote1:~/testSCP [email protected]:~/
Furcsa viselkedésem van. Annak ellenére, hogy a jelszavam helyes, a következő kimenetet adja:
[email protected]"s password: [email protected]"s password: Permission denied, please try again. [email protected]"s password: Permission denied, please try again. [email protected]"s password:
Még nem engedélyeztem a kulcs nélküli hitelesítést.
Új frissítés
Miután többféleképpen kipróbáltam, a szkriptjeimmel meg tudtam csinálni úgy, hogy bejelentkeztem a remote1-re az ssh-en keresztül a localhost-ról, majd az scp-re a remote1-ről a remote2-re. Ez azonban nem válaszol a kérdésemre. Azt terveztem, hogy közvetlenül a helyi gépemről fogom csinálni, majd két példány között továbbítok fájlokat, ami azt hiszem, hogy nem támogatott, ha két példány ssh démonja más portot használ, mint az alapértelmezett ssh kapcsolat.
Megjegyzések
Válasz
Ezt nem lehet megtenni egyszerű távoli-távoli scp-vel [1].
Ehelyett ssh az első távoli gazdagépre, és futtassa az scp-t egy port argumentummal onnan:
ssh -p 2222 ruser1@rhost1 scp -P 2222 /rpath/1 ruser2@rhost2:/rpath/2
Ha pontosan azt szeretné megtenni, amit a scp
, akkor a -n -x -oClearAllForwardings=yes
beállításokat hozzáadhatja a ssh
, bár erre általában nincs szükség.
[1]: A scp
újabb verziói támogatják az uri specifikációt (beleértve a portot is) host:path
helyett, de csak akkor, ha a -3
beállítást használja (“áthaladás a helyi gazdagépen”).
Tehát valószínűleg használhatja a következőt:
scp -3 -P 2222 ruser1@rhost1:/rpath/1 scp://ruser2@rhost2:2222//rpath/2
(vegye figyelembe, hogy a /
a host[:port]
nem része az útnak – a ./file
-re fog hivatkozni a user
” s saját könyvtárban).
De a localhoston keresztül történő másolás lassabb, és tapasztalatom szerint ez elrejti a hibákat. Például ez nem nyomtat ki hibaüzenetet annak ellenére, hogy nem tudott létrehozni /foo/bar/baz
fájlt:
scp -3 localhost:.bashrc localhost:/foo/bar/baz
Nem jutottam ebbe a mélységbe – csak kerülgettem 😉
Ha valakit mindez nem győz meg, megnézheti a forráskód :
void toremote(char *targ, int argc, char **argv) { ... } else if (host) { /* standard remote to remote */ if (tport != -1 && tport != SSH_DEFAULT_PORT) { /* This would require the remote support URIs */ fatal("target port not supported with two " "remote hosts without the -3 option"); }
Vegye figyelembe, hogy a tport
változó csak be van állítva egy scp://
uri elemzésével, és egyszerűen nem létezik a 7.6p1-nél régebbi verziókban (2017. okt.).
Megjegyzések
- El tudnád magyarázni, mit csinál
-x -oClearAllForwardings=yes
ez a lehetőség a válaszodban? Arra is gondoltam, hogy megtehető-e arsync
használatával. -
-x
letiltja az X11 továbbítást és a-oClear..
letiltja az összes TCP továbbítást (ha bármelyiket rákényszerítették~/.ssh/config
vagy/etc/ssh/ssh_config
) - @RakibFiha rsync azt mondja: " A forrás és a cél egyaránt nem lehet távoli ". Talán vannak trükkök körülötte, de ennek külön kérdésnek kell lennie.
- Most a részletes magyarázatod után jöttem rá. (y)
~/.ssh/config
Az 1 távoli és távoli távoli alapértelmezett port a ~ / .ssh / config fájlban nem változik, így az alapértelmezett 22. portja szerkeszthető, de egyvonalas használatával szeretné megtenni, ahelyett, hogy minden egyes ssh-konfigurációt egyszerre szerkesztene.ssh
eggyé alakíthatja a távoli gazdagépeket, és onnan kiadhat egy egyszerűscp
fájlt, vagy megteheti egy sorban valamivel,ssh -t -p <remote1 port> user1@remote1 'scp -P <remote2 port> user2@remote2:/source/path /dest/path'
. Ezenkívül ' nem kell egyszerre szerkesztenie aconfig
fájlokat: csak párszor minden gazda számára (pl. A port beállítása csatlakozás azremote2
csatornához aremote1
oldalon), de természetesen ettől kényelmetlen lehet, a gazdagépek számától függően.