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:
- ssh sammy@your_server_ip_or_remote_hostname
Nëse funksionon, dilni përsëri duke shkruar:
- exit
Tani mund të krijojmë një seancë SFTP duke lëshuar komandën e mëposhtme:
- 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ë:
- 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:
- help
ose
- ?
Kjo do të shfaq një listë të komandave të disponueshme:
OutputAvailable 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:
- pwd
OutputRemote working directory: /home/demouser
Ne mund të shikojmë përmbajtjen e drejtorisë aktuale të sistemit në distancë me një komandë tjetër të njohur:
- ls
OutputSummary.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:
- ls -la
Outputdrwxr-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ë:
- 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:
- lpwd
OutputLocal working directory: /Users/demouser
Ne mund të rendisim përmbajtjen e drejtorisë aktuale në makinën lokale:
- lls
OutputDesktop 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:
- 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
:
- get remoteFile
OutputFetching /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:
- 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:
- 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
:
- 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
:
- put localFile
OutputUploading 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
:
- 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ë:
- 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:
- !
dhe pastaj
- df -h
OutputFilesystem 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:
- 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:
- 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:
- get /etc/passwd
- !less passwd
Outputroot: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:
- 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:
- get /etc/group
- !less group
Outputroot: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ë:
- chmod 777 publicFile
OutputChanging 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
:
- lumask 022
OutputLocal 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ë:
- ln
- rm
- 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ë:
- !
Ose ekzekutoni një komandë të vetme në sistemin lokal duke paraprirë komandën me !
si kjo:
- !chmod 644 somefile
Kur të keni mbaruar me sesionin tuaj SFTP, përdorni dalje
ose bye
për të mbyllur lidhjen.
- 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.