Si të përdorni SFTP për të transferuar në mënyrë të sigurt skedarët me një server në distancë


Prezantimi

FTP, Protokolli i Transferimit të Skedarit, ishte një metodë popullore, e pakriptuar e transferimit të skedarëve ndërmjet dy sistemeve të largëta. Që nga viti 2022, ai është zhvlerësuar nga shumica e softuerëve modernë për shkak të mungesës së sigurisë dhe mund të përdoret kryesisht vetëm në aplikacionet e vjetra.

SFTP, që qëndron për Secure File Transfer Protocol, është një protokoll i veçantë i paketuar në SSH që mund të zbatojë komandat FTP përmes një lidhjeje të sigurt. Në mënyrë tipike, ai mund të veprojë si një zëvendësim i hyrjes në çdo kontekst ku nevojitet ende një server FTP.

Pothuajse në të gjitha rastet, SFTP preferohet nga FTP për shkak të veçorive themelore të sigurisë dhe aftësisë për t'u kthyer në një lidhje SSH. FTP është një protokoll i pasigurt që duhet të përdoret vetëm në raste të kufizuara ose në rrjetet që ju besoni.

Megjithëse SFTP është i integruar në shumë mjete grafike, ky udhëzues do të demonstrojë se si ta përdorni atë përmes ndërfaqes së tij interaktive të linjës së komandës.

Si të lidheni me SFTP

Si parazgjedhje, SFTP përdor protokollin SSH për të vërtetuar dhe krijuar një lidhje të sigurt. Për shkak të kësaj, të njëjtat metoda vërtetimi janë të disponueshme që janë të pranishme në SSH.

Megjithëse mund të vërtetoni me fjalëkalim si parazgjedhje, ju rekomandojmë të krijoni çelësa SSH dhe ta transferoni çelësin tuaj publik në çdo sistem që ju duhet të përdorni. Kjo është shumë më e sigurt dhe mund t'ju kursejë kohë në planin afatgjatë.

Ju lutemi shikoni këtë udhëzues për të konfiguruar çelësat SSH për të hyrë në serverin tuaj nëse nuk e keni bërë tashmë.

Nëse mund të lidheni me makinën duke përdorur SSH, atëherë keni plotësuar të gjitha kërkesat e nevojshme të nevojshme për të përdorur SFTP për të menaxhuar skedarët. Testoni hyrjen SSH me komandën e mëposhtme:

  1. ssh sammy@your_server_ip_or_remote_hostname

Nëse funksionon, dilni përsëri duke shkruar:

  1. exit

Tani mund të krijojmë një seancë SFTP duke lëshuar komandën e mëposhtme:

  1. sftp sammy@your_server_ip_or_remote_hostname

Ju do të lidhni sistemin në distancë dhe kërkesa juaj do të ndryshojë në një kërkesë SFTP.

Nëse jeni duke punuar në një port të personalizuar SSH (jo portin e paracaktuar 22), atëherë mund të hapni një sesion SFTP si më poshtë:

  1. sftp -oPort=custom_port sammy@your_server_ip_or_remote_hostname

Kjo do t'ju lidhë me sistemin në distancë me anë të portit tuaj të specifikuar.

Marrja e ndihmës në SFTP

Komanda më e dobishme për të mësuar së pari është komanda ndihmë. Kjo ju jep akses në një përmbledhje të komandave të tjera SFTP. Mund ta telefononi duke shtypur njërën nga këto në prompt:

  1. help

ose

  1. ?

Kjo do të shfaq një listë të komandave të disponueshme:

Output
Available commands: bye Quit sftp cd path Change remote directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' df [-hi] [path] Display statistics for current directory or filesystem containing 'path' exit Quit sftp get [-Ppr] remote [local] Download file help Display this help text lcd path Change local directory to 'path' . . .

Ne do të shqyrtojmë disa nga komandat që shihni në seksionet e mëposhtme.

Lundrimi me SFTP

Ne mund të navigojmë nëpër hierarkinë e skedarëve të sistemit në distancë duke përdorur një numër komandash që funksionojnë në mënyrë të ngjashme me homologët e tyre të guaskës.

Së pari, le të orientohemi duke zbuluar se në cilën direktori ndodhemi aktualisht në sistemin në distancë. Ashtu si në një sesion tipik shell, ne mund të shtypim sa vijon për të marrë direktorinë aktuale:

  1. pwd
Output
Remote working directory: /home/demouser

Ne mund të shikojmë përmbajtjen e drejtorisë aktuale të sistemit në distancë me një komandë tjetër të njohur:

  1. ls
Output
Summary.txt info.html temp.txt testDirectory

Vini re se komandat e disponueshme brenda ndërfaqes SFTP nuk përputhen 1:1 për sintaksën tipike të guaskës dhe nuk janë aq të pasura me veçori. Megjithatë, ata zbatojnë disa nga flamujt opsionalë më të rëndësishëm, të tillë si shtimi i -la te ls për të parë më shumë të dhëna meta të skedarëve dhe leje:

  1. ls -la
Output
drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 . drwxr-xr-x 3 root root 4096 Aug 13 15:02 .. -rw------- 1 demouser demouser 5 Aug 13 15:04 .bash_history -rw-r--r-- 1 demouser demouser 220 Aug 13 15:02 .bash_logout -rw-r--r-- 1 demouser demouser 3486 Aug 13 15:02 .bashrc drwx------ 2 demouser demouser 4096 Aug 13 15:04 .cache -rw-r--r-- 1 demouser demouser 675 Aug 13 15:02 .profile . . .

Për të shkuar në një drejtori tjetër, ne mund të lëshojmë këtë komandë:

  1. cd testDirectory

Tani mund të kalojmë sistemin e skedarëve në distancë, por çka nëse duhet të hyjmë në sistemin tonë lokal të skedarëve? Ne mund t'i drejtojmë komandat drejt sistemit lokal të skedarëve duke i paraprirë atyre një l për lokale.

Të gjitha komandat e diskutuara deri më tani kanë ekuivalente lokale. Ne mund të printojmë drejtorinë lokale të punës:

  1. lpwd
Output
Local working directory: /Users/demouser

Ne mund të rendisim përmbajtjen e drejtorisë aktuale në makinën lokale:

  1. lls
Output
Desktop local.txt test.html Documents analysis.rtf zebra.html

Ne gjithashtu mund të ndryshojmë drejtorinë me të cilën duam të ndërveprojmë në sistemin lokal:

  1. lcd Desktop

Transferimi i skedarëve me SFTP

Nëse duam të shkarkojmë skedarë nga hosti ynë në distancë, mund ta bëjmë këtë duke përdorur komandën merr:

  1. get remoteFile
Output
Fetching /home/demouser/remoteFile to remoteFile /home/demouser/remoteFile 100% 37KB 36.8KB/s 00:01

Siç mund ta shihni, si parazgjedhje, komanda merr shkarkon një skedar në distancë në një skedar me të njëjtin emër në sistemin lokal të skedarëve.

Ne mund ta kopjojmë skedarin në distancë në një emër tjetër duke specifikuar emrin më pas:

  1. get remoteFile localFile

Komanda merr pranon gjithashtu disa flamuj opsionesh. Për shembull, ne mund të kopjojmë një direktori dhe të gjithë përmbajtjen e tij duke specifikuar opsionin rekurziv:

  1. get -r someDirectory

Ne mund t'i themi SFTP të ruajë lejet dhe kohët e duhura të aksesit duke përdorur flamurin -P ose -p:

  1. get -Pr someDirectory

Transferimi i skedarëve lokalë në sistemin në distancë

Transferimi i skedarëve në sistemin në distancë funksionon në të njëjtën mënyrë, por me një komandë put:

  1. put localFile
Output
Uploading localFile to /home/demouser/localFile localFile 100% 7607 7.4KB/s 00:00

Të njëjtët flamuj që funksionojnë me merr zbatohen për put. Pra, për të kopjuar një drejtori të tërë lokale, mund të ekzekutoni put -r:

  1. put -r localDirectory

Një mjet i njohur që është i dobishëm gjatë shkarkimit dhe ngarkimit të skedarëve është komanda df, e cila funksionon në mënyrë të ngjashme me versionin e linjës së komandës. Duke përdorur këtë, mund të kontrolloni nëse keni hapësirë të mjaftueshme për të përfunduar transferimet që ju interesojnë:

  1. df -h
Output
Size Used Avail (root) %Capacity 19.9GB 1016MB 17.9GB 18.9GB 4%

Ju lutemi vini re se nuk ka asnjë variacion lokal të kësaj komande, por ne mund ta shmangim atë duke lëshuar komandën !.

Komanda ! na hedh në një guaskë lokale, ku mund të ekzekutojmë çdo komandë të disponueshme në sistemin tonë lokal. Mund të kontrollojmë përdorimin e diskut duke shtypur:

  1. !

dhe pastaj

  1. df -h
Output
Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 595Gi 52Gi 544Gi 9% / devfs 181Ki 181Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home

Çdo komandë tjetër lokale do të funksionojë siç pritej. Për t'u kthyer në seancën tuaj SFTP, shkruani:

  1. exit

Tani duhet të shihni kthimin e shpejtë të SFTP.

Manipulime të thjeshta me skedarë me SFTP

SFTP ju lejon të kryeni disa lloje të ruajtjes së sistemit të skedarëve. Për shembull, mund të ndryshoni zotëruesin e një skedari në sistemin në distancë me:

  1. chown userID file

Vini re se si, ndryshe nga komanda e sistemit chmod, komanda SFTP nuk pranon emrat e përdoruesve, por përdor UID. Fatkeqësisht, nuk ka asnjë mënyrë të integruar për të njohur UID-in e duhur nga brenda ndërfaqes SFTP.

Si zgjidhje, mund të lexoni nga skedari /etc/passwd, i cili lidh emrat e përdoruesve me UID-të në shumicën e mjediseve Linux:

  1. get /etc/passwd
  2. !less passwd
Output
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh . . .

Vini re se si në vend që të japim komandën ! në vetvete, ne e kemi përdorur atë si një parashtesë për një komandë lokale të guaskës. Kjo funksionon për të ekzekutuar çdo komandë të disponueshme në makinën tonë lokale dhe mund të ishte përdorur më herët me komandën lokale df.

UID do të jetë në kolonën e tretë të skedarit, siç përcaktohet me karaktere dy pika.

Në mënyrë të ngjashme, ne mund të ndryshojmë pronarin e grupit të një skedari me:

  1. chgrp groupID file

Përsëri, nuk ka asnjë mënyrë të integruar për të marrë një listë të grupeve të sistemit në distancë. Ne mund të punojmë rreth tij me komandën e mëposhtme:

  1. get /etc/group
  2. !less group
Output
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: . . .

Kolona e tretë mban ID-në e grupit të lidhur me emrin në kolonën e parë. Kjo është ajo që ne po kërkojmë.

Komanda chmod SFTP funksionon normalisht në sistemin e skedarëve në distancë:

  1. chmod 777 publicFile
Output
Changing mode on /home/demouser/publicFile

Nuk ka asnjë komandë ekuivalente për manipulimin e lejeve të skedarëve lokalë, por ju mund të vendosni umask lokal, në mënyrë që çdo skedar i kopjuar në sistemin lokal të ketë lejet e tyre përkatëse.

Kjo mund të bëhet me komandën lumask:

  1. lumask 022
Output
Local umask: 022

Tani të gjithë skedarët e rregullt të shkarkuar (për sa kohë që nuk përdoret flamuri -p) do të kenë 644 leje.

SFTP gjithashtu ju lejon të krijoni direktori si në sistemet lokale ashtu edhe në ato të largëta me lmkdir dhe mkdir përkatësisht.

Pjesa tjetër e komandave të skedarëve synojnë vetëm sistemin e skedarëve në distancë:

  1. ln
  2. rm
  3. rmdir

Këto komanda përsërisin sjelljen thelbësore të ekuivalentëve të tyre të guaskës. Nëse keni nevojë të kryeni këto veprime në sistemin lokal të skedarëve, mbani mend se mund të futeni në një guaskë duke lëshuar këtë komandë:

  1. !

Ose ekzekutoni një komandë të vetme në sistemin lokal duke paraprirë komandën me ! si kjo:

  1. !chmod 644 somefile

Kur të keni mbaruar me sesionin tuaj SFTP, përdorni dalje ose bye për të mbyllur lidhjen.

  1. bye

konkluzioni

Megjithëse sintaksa SFTP është shumë më pak gjithëpërfshirëse sesa vegla moderne e guaskës, ajo mund të jetë e dobishme për të siguruar përputhshmëri me sintaksën e vjetër të FTP ose për të kufizuar me kujdes funksionalitetin e disponueshëm për përdoruesit e largët të disa mjediseve.

Për shembull, mund të përdorni SFTP për të mundësuar përdorues të caktuar të transferojnë skedarë pa akses SSH. Për më shumë informacion mbi këtë proces, shikoni tutorialin tonë se si të aktivizoni SFTP pa akses në Shell.

Nëse jeni mësuar të përdorni FTP ose SCP për të kryer transferimet tuaja, SFTP është një mënyrë e mirë për të shfrytëzuar pikat e forta të të dyjave. Ndërsa nuk është i përshtatshëm për çdo situatë, është një mjet fleksibël për ta pasur në repertorin tuaj.