Körülnéztem más kérdéseket itt és a “scp use” oktatóanyagok között Internet, de nem tudom rendezni, hogy mi a baj.
Én a Linux Mint-et használom, és megpróbálom kitalálni, hogyan scp működik.
Van egy fájlom fájl.ext (a számítógépemen) a / home / name / dir /
könyvtárban távoli gép, amely ssh -t használ, például:
ssh -p 2222 username@domain
megkérdezi a jelszót, és a shell megjeleníti:
username@domain ~ $
most, ha kiadom a parancsot (az ssh futtatása előtt a / home / name / dir ):
scp -r -P 2222 file.ext username@domain
kimenet a következő:
cp: cannot stat ‘file.ext’: No such file or directory
Ugyanez az eredmény, ha a file.ext helyett a teljes elérési utat írom.
scp -r -P 2222 /home/name/dir/file.ext username@domain
A kiszolgáló rendszergazdája azt is mondta, hogy feltöltöm a fájlt a távoli otthoni könyvtáramba (root helyett), például:
scp -r -P 2222 file.ext username@domain:~/
de amikor megteszem és megnyomom az “Enter” -t, semmi sem történik, mintha a shell további bevitelre várna.
A problémáim összefoglalása:
- cp: nincs ilyen fájl vagy könyvtár
- héj “beragadt” a ~ /
ul fájlra >
Van valami javaslata?
Megjegyzések
Válasz
Futtatnia kell a scp
parancs a helyi gépről, nem a távvezérlőről. Egyáltalán nem kell a ssh
:
dragonmnl@local $ scp -P 2222 file.ext username@domain:~/
Nem kell a -r
:
-r Recursively copy entire directories.
Ha már be van jelentkezve a távoli gépbe, és másolni szeretne a helyi, akkor ezt meg kell tennie: győződjön meg arról, hogy a helyi gép az interneten keresztül elérhető és ssh
be van állítva. Nem hiszem, hogy erre vágysz, de ha mégis, csak futtasd ezt a távvezérlőről:
username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
Megjegyzések
- köszi. A probléma az volt, hogy megpróbáltam futtatni az scp-t az ssh munkameneten belül. Most már működik!
Válasz
Kétféle módszert kínálok a fájlok fel / le betöltésére a távoli és a helyi gép között (Mac air-t használok):
Ebben az esetben fel / le szeretnék 11.jpeg
a helyi és a távoli között:
-
A szervizen lévő fájlok másolása a helyi könyvtárba: A parancs végrehajtásához a helyi bash terminálon kell lennie, nem pedig akkor, amikor az ssh-ben van!
scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/
fájlok másolása a helyi távoli szolgáltatás: Önnek is a helyi bash terminálban kell lennie
scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
-
Ugyanazon szándék eléréséhez , amikor az SSH-ba jelentkezik , először be kell állítania a Rendszerbeállítások > > távoli napló > összes felhasználó megosztása (nem vagyok biztos benne, hogy be kell állítania a ” összes felhasználót “, de ebben a helyzetben működik) “a Mac meg fogja mondani ” A távoli bejelentkezéshez írja be a következőt:
ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/**
Ez a fenti parancs fájl letöltésére szolgál. távoli helyett helyi, amikor belép az ssh-be. Csak állítsa be a két útvonalat, ha fájlt szeretne feltölteni.
Megjegyzések
- Végül úgy látom, hogy a Filezilla a legkényelmesebb a mindennapi munkában ~~
Válasz
Használja a scp
parancsot
Ha mappát szeretne átvinni, csak zip
először, később unzip
megtehetjük.
Számítógépén futtassa ezt:
$ scp your_path_to_the_file/the_file [email protected]:~/
Itt root
az Ön fiókja, a 10.145.198.100
pedig a a távoli szerver IP-címe. A the_file
fájlt átmásoljuk a távoli ~/
mappába.
Csomagolja ki a fájlt:
$ unzip the_zip_file.zip -d destination_folder
megjegyzések
- Miért lenne
root
még SSH hozzáféréssel is rendelkezik a távoli gépen? Ez ‘ elég bizonytalan. Jobb, ha egy közönséges használatot használunk, majdsudo
bármilyen gyökér elvégzéséhez az adott gépen.
Válasz
Ha ezt az scp parancsot futtatja a távoli gépen, akkor a file.ext
fájlt “helyi” fájlként keresi, azaz a távoli gépen.
Ha egy fájlt a távoli gépről a helyi gépre szeretne másolni, használja a div id = “1207263292”>
(feltételezve, hogy afile.ext
a távoli számítógép~/dir
-jében van, mint az Ön példájában) . Ha ascp
parancsot futtatja a távoli gépen, fordítsa meg a “local” és a “remote” parancsot.
Megjegyzések
- Az OP azt akarja, hogy helyi másolatról másoljon, lásd az OP ‘ s címet.
- Hoppá, gondolom, ön ‘ igaza van. De ő ‘ láthatóan visszafelé csinálja …
Válasz
Csak egy kis hozzájárulás, talán segíthet a hozzám hasonló kezdőknek: a távoli könyvtár elérési útját így kell írni: username@domain:~/remote_directory
Amit itt szeretnék kiemelni, az az, hogy mindig hozzá kell tennünk, hogy :~/
Válasz
Megoldás fájlok Linux kliensről Linux szerverre másolására
-
Ellenőrizze, hogy az
sshd
fut-e a szerveren:ps aux | grep sshd
-
Ha nem, telepítse a
OpenSSH
alkalmazást asudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Indítsa újra a szervert, és ellenőrizze, hogy az
sshd
fut-e a -
Ha szükséges konfigurálhatja a
/etc/ssh/sshd_config
fájlt, de az egyszerű konfigurációkhoz nem szükséges -
ellenőrizze, hogy th A portok a
netcat
használatával vannak megnyitva:nc -v -z 127.0.0.1 22
-
Fájlok másolásához div id = “3474e7d361”>
kliens egy Linux
klienshez az scp használatával az alábbiak szerint scp ~/filename.md [email protected]:~/folder/filename.md
A fájl másolásának ellenőrzéséhez használja a következőt: ssh [email protected]
, és adja meg jelszavát.
Megoldás fájlok Linux kliensről másolására Windows
-
Az SSH futtatásához több kliens is létezik szerverek Windows rendszeren, például:
-
Telepítse a fenti kiszolgálók egyikét, és ellenőrizze, hogy a 22. port meg van-e nyitva a
netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=UDP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=UDP localport=22
netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=TCP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=TCP localport=22
netsh advfirewall set allprofiles state off
-
Ezeknek a szervereknek az összehasonlítása:
Bitvise SSH szerver
-
Szinte közel a natív
cmd
prompthoz,powershell
prompthoz, automatikus kiegészítéshez -
További képességeket biztosít a testreszabáshoz, ha speciális használatra van szüksége.
-
A felhasználói testreszabás egyszerű igények esetén 0. 2 percen belül elkezdtem, sok idő után.
MobaSSH
ésOpenSSH
működésbe hozása. -
Fájlok másolása scp használatával felhasználás:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
Ingyenes személyes használatra, 99 USD szakmai használatra. A sok funkció és a nagyszerű integráció miatt az ár megéri a pénzét.
MobaSSH:
-
Linuxot biztosít shell Windows rendszeren, ahol egyszerű Linux parancsok, például
ls
,cp
,find
stb., work, hasonló aMINGW64
-
fájlhoz,
cmd
éspowershell
közvetlenül acmd
vagypowershell
-
Az Unicode támogatás gyenge. A kódolás nem megfelelő. Például, ha megpróbálja elindítani az
Python
tolmácsot, összeomlik. A kódolást manuálisan kell módosítania a ( https://stackoverflow.com/a/12834315/4752883 ) használatával:chcp 65001
set PYTHONIOENCONDING=utf-8
, majd indítsa el a Python parancssort -
A MobaSSH nagyszerű tulajdonsága, hogy nagyon egyszerű felhasználói felülettel rendelkezik, és
scp
ésssh
és jól integrálódtak. Így működik ez egyszerű használat esetén is -
Fájlok másolása Linux kliensről egy
MobaSSH
futtató Windows szerverre: használja ascp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Ennek oka, hogy azMobaSSH
a Cygwin-re épül, és meghajtói ugyanúgy vannak leképezvecygwin
– s meghajtók leképezve vannak.
Használja a Microsoft virtuális gépeit, ha az https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , az OpenSSHv6.7 már telepítve van.
-
Nagyon hibás, ezért erősen testre kell szabnia.
-
A parancs végrehajtása nem működik
-
Üres helyeket hagy, amikor a kurzort a terminálon mozgatja
-
A Python nem működik
-
Lehetséges, hogy az OpenSSH későbbi verziói javítottak rajta. Továbbá úgy tűnik, hogy az MS elérhetővé teszi az OpenSSH-t a Opcionális szolgáltatások ” https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
-
Válasz
Ha véletlenül OSX-en van …
Amikor megpróbáltam futtatni @ local: / file_directory felhasználónévvel …
A következő hibát kaptam:
ssh: local: node name or service name not known
Megoldás
Mac gépemen a következőket kellett elvégeznem a helyi ssh
beállításához:
Rendszerbeállítások -> Internet & Hálózat -> Megosztás -> ENABLE Távoli bejelentkezés
Ez megadta a @ felhasználónév @ ip címet.
Válasz
Ugyanez a probléma volt ma a MAC-on.
Írja be a következő parancsot:
scp /local-file-path/ /-remote-location-path/
localuser@machineA: ssh -p 2222 username@domain
(annak jelzésére, hogy az ssh parancsot lokalizálóként futtatja az A gépen)scp
használatakor a A távoli oldalon mindig tartalmaznia kell a kettőspontot (pl.remotehost:/tmp
), különben csak egy közönséges másolatot készít (scp /tmp/foo.txt example.com
a/tmp/foo.txt
fájlt egy helyi fájlba másoljaexample.com
)-r
jelző, mivel erre nincs szükség egyetlen fájl másolásához (‘ szokott rekurzívan könyvtárakat másolni)