
🔓 Kuidas saada WinSCP-s juurõigusi: sudo seadistamine failiedastusteks
Ühendute serveriga tavaõigustes kasutajana, navigeerite kausta /etc/nginx ja saate veateate „Permission denied". Konfiguratsioonifailid, süsteemikataloogid, logid: kõik see on root-õigusteta konto eest lukus. Ja otsene root-kasutajaga SSH kaudu sisselogimine on enamikul serveritel turvakaalutlustel keelatud.
WinSCP on mugav failihaldur Windowsile, kuid vaikimisi töötab selle SFTP-seanss selle kasutaja õigustega, kellena sisse logisite. SFTP-protokoll ei saa „lennult" õiguste tõstmist taotleda nagu terminal: see ei ole autentimise ajal interaktiivne ega saa kuvada akent sudo parooli sisestamiseks.
Allpool on neli töötavat meetodit, kuidas panna WinSCP tööle superkasutaja õigustes, alates lihtsaimast kuni „Jedi" lähenemiseni. Kõiki on testitud Ubuntu, Debiani ja CentOS peal. Valige see, mis teie infrastruktuuriga kõige paremini sobib.
💡 Kiirülevaade:
- ➡️ Probleem: WinSCP ei anna vaikimisi
root-õigusi, isegi kui kasutajal onsudo. - ✅ Peamine meetod: SFTP-serveri käivituskäsu asendamine WinSCP saidi seadetes. Kiire ja sihitud.
- 🔄 Alternatiiv: SCP-protokollile üleminek, kasutades shellina
sudo su -. - ⚙️ Edasijõudnutele:
sshd_configredigeerimine serveris. Globaalne lahendus kõikidele ühendustele.
1. Samm: SFTP-serveri käivituskäsk (peamine meetod)
Kõige levinum ja elegantsem viis root-õiguste saamiseks WinSCP-s on panna see SFTP-serverit kohe algusest superkasutajana käivitama. Seda tehakse konkreetse ühenduse seadetes käivituskäsu asendamisega. Serverit ennast ei ole vaja ümber seadistada; lahendus töötab ühendusepõhiselt.

Samm-sammuline juhend:
- Käivitage WinSCP ja avage Site Manager.
- Valige soovitud ühendus ja klõpsake Edit.
- Klõpsake akna allservas Advanced….
- Vasakpoolses menüüs minge Environment → SFTP.
- Väljal „SFTP Server" asendage „Default" järgmise käsuga:
1 sudo /usr/lib/openssh/sftp-server
Vanemate distributsioonide puhul võib asukoht erineda. Tüüpilised sftp-server asukohad:
Distributsioon | Asukoht sftp-serverile |
|---|---|
Ubuntu / Debian (praegune) |
|
Ubuntu / Debian (vanem) |
|
CentOS / RHEL / Fedora |
|
Amazon Linux |
|
Täpse asukoha saate oma serveris terminali kaudu kontrollida: cat /etc/ssh/sshd_config | grep Subsystem. See käsk näitab, millist binaarfaili SSH-server ise kasutab.
Süsteem käivitab failiedastuse alamsüsteemi kohe root-õigustega. Kuid selleks, et see töötaks veateateta, peab teie kasutaja saama käivitada sudo ilma parooli küsimata. Seda käsitletakse järgmises sammus.
2. Samm: sudoers seadistamine (sudo lubamine ilma paroolita)
Kuna SFTP autentimine ei ole interaktiivne, ei saa WinSCP kuvada akent sudo parooli sisestamiseks. Server lihtsalt lõpetab ühenduse veateatega, kui parooli küsitakse. Lahendus on anda kasutajale /etc/sudoers faili kaudu luba käivitada vajalik käsk ilma paroolita.

Mida teha:
- Looge serveriga SSH-ühendus (kasutades PuTTY-d või WinSCP sisseehitatud terminali).
- Avage sudoers redaktor käsuga
sudo visudo. Ärge kunagi redigeerige/etc/sudoersotse: süntaksiviga lukustabsudokogu süsteemi jaoks javisudokontrollib süntaksit enne salvestamist. - Lisage faili lõppu järgmine rida (asendage
usernameoma kasutajanimega):
1 username ALL=(ALL) NOPASSWD: ALL
See annab kasutajale täieliku juurdepääsu ilma paroolita. Turvalisem variant on piirata luba ainult SFTP-serveri käivituskäsule:
1 username ALL=NOPASSWD: /usr/lib/openssh/sftp-server
Kui serveril on mitu erineva kasutajanimega administraatorit, vähendab kitsas konfiguratsioon riske: isegi kui konto satub ohtu, ei saa ründaja root-juurdepääsu kõigele, vaid ainult võimaluse SFTP-d käivitada.
Märkus: requiretty valik sudoers failis peab olema keelatud. Kaasaegsed sudo-rs teostused seda vaikimisi ei toeta, kuid vanematel serveritel kontrollige ja kommenteerige välja rida Defaults requiretty, kui see on olemas.
3. Samm: SCP-protokollile üleminek (kiire alternatiiv)
Kui te ei soovi tegeleda sftp-server asukohtadega, saate vahetada andmeedastusprotokolli ennast. WinSCP toetab SCP-d, vanemat, kuid usaldusväärset protokolli, mis võtab shelli seaded kergemini üle.

Kuidas vahetada:
- WinSCP seansi seadetes muutke File protocol SFTP asemel SCP peale.
- Minge Advanced → SCP/Shell.
- Väljale Shell sisestage:
sudo su -
Ühenduse loomisel käivitab WinSCP selle käsu kohe pärast sisselogimist ja lülitab seansi root-režiimi.
| SFTP | SCP |
|---|---|---|
Root-õigused | Serveri binaarfaili asendamise kaudu | Shelli asendamise kaudu ( |
Kiirus | Suurem, eriti paljude väikeste failide puhul | Madalam |
Jätkamine katkestuse korral | Jah | Ei |
Usaldusväärsus vanematel süsteemidel | Nõuab binaarfaili täpset asukohta | Töötab „karbist välja" |
Turvalisus | NOPASSWD saab piirata ühele käsule | Nõuab täielikku paroolita sudo ligipääsu |
SCP meetod on kompromiss. Seda on lihtsam seadistada, kuid see kaotab SFTP-le kiiruses ja taastumisvõimes pärast ühenduse katkemist. Ühekordsete konfiguratsioonimuudatuste puhul on erinevus tühine. Sadade failide regulaarseks edastamiseks on parem seadistada SFTP meetod.
4. Samm: Globaalne sshd_config seadistus (edasijõudnutele)
See meetod on administraatoritele, kes soovivad SSH-serveri käitumist tsentraalselt seadistada. Idee: asendada rida Subsystem sftp failis /etc/ssh/sshd_config loogilise konstruktsiooniga, mis tuvastab automaatselt, kas kasutaja saab sudo ilma paroolita käivitada, ja käivitab SFTP vastavate õigustega.
Mida muuta:
Vana rida (tavaliselt):
1 Subsystem sftp /usr/lib/openssh/sftp-server
Uus rida:
1 Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
Kuidas see töötab:
sudo -n truekontrollib, kas kasutaja saabsudoilma paroolita käivitada (lipp-ntähendab mitteinteraktiivset).- Kui jah (
&&), käivitub serverroot-õigustega. - Kui ei (
||), käivitub server tavaliste kasutajaõigustega.
Pärast redigeerimist taaskäivitage SSH-teenus: sudo systemctl restart sshd.
Oluline: süntaksiviga selles failis lukustab teid täielikult serverist SSH kaudu välja. Enne redigeerimist veenduge, et teil on teine terminal aktiivse seansiga. Kui midagi läheb valesti, saate muudatused tagasi võtta. Samuti tehke varukoopia: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.
Pilveserverite eripärad (AWS EC2, DigitalOcean)
Pilve Linuxi tõmmistel on sageli eelseadistatud sudoers sätted, mis võivad ülesannet kas lihtsustada või keerulisemaks muuta.

AWS EC2 (Ubuntu):
ubuntu kasutajal Ubuntu 18.04 ja uuematel tõmmistel on sageli juba vajalikud õigused olemas. Kontrollige faili /etc/sudoers.d/90-cloud-init-users, mis võib juba sisaldada rida:
1 ubuntu ALL=(ALL) NOPASSWD:ALL
Kui see on seal, võite 2. sammu vahele jätta. WinSCP seadetes kasutage käsku sudo /usr/lib/openssh/sftp-server.
AWS EC2 (Amazon Linux):
Amazon Linuxis on sftp-server asukoht erinev: /usr/libexec/openssh/sftp-server. Ühetäheline viga (lib asemel libexec) annab tulemuseks veakoodi 127 (Command not found) ja kohese ühenduse katkemise.
DigitalOcean (Ubuntu Dropletid):
Tavalistel DigitalOceani dropletitel on root kasutaja vaikimisi lubatud, kuid juurdepääs on ainult SSH võtme kaudu. Kui lõite eraldi kasutaja, on sudoers konfiguratsioon sama, mis tavalise Ubuntu puhul.
Üldine nõuanne pilve jaoks: enne asukoha sisestamist WinSCP-s kontrollige, kas fail on serveris olemas: ls -la /usr/lib/openssh/sftp-server (või teie distributsioonile vastav ekvivalent).
⁉️🤔 Korduma kippuvad küsimused
Kas ma pean lubama otsese root-kasutajaga sisselogimise, et WinSCP töötaks koos sudoga?
Ei. Kirjeldatud meetodite kogu mõte on kasutada tavalist kontot ja ajutiselt tõsta õigusi
sudoabil. Otsestroot-sisselogimist (PermitRootLogin yes) peetakse halvaks turvatavaks: logid ei näita, milline administraator tegelikult toimingu tegi.
Miks näitab WinSCP pärast seadistamist viga „Command not found"?
Tõenäoliselt on
sftp-serverasukoht vale. Erinevates distributsioonides asub see kaustas/usr/lib/,/usr/lib/openssh/või/usr/libexec/openssh/. Täpset asukohta saab serveris kontrollida käsugacat /etc/ssh/sshd_config | grep Subsystem.
Kui turvaline on NOPASSWD sudoers failis?
See on kompromiss. Täielik juurdepääs
ALL=(ALL) NOPASSWD:ALLvähendab kaitset: kui ründaja saab juurdepääsu kasutajale, saab ta karoot-õigused. Konkreetse käsuga piiramine (/usr/lib/openssh/sftp-server) on oluliselt turvalisem: kõrvaline isik ei saa selle konto kaudu käivitada midagi muud peale SFTP-serveri.
Kas see töötab ka teiste klientidega nagu FileZilla või Cyberduck?
Põhimõte on sama, kuid konfiguratsioon erineb. FileZillal ei ole graafilises liideses mugavat välja SFTP-serveri käsu jaoks; vaja on konfiguratsioonifaili redigeerida. Cyberduck toetab ühenduse seadetes valikut „SFTP Server", sarnaselt WinSCP-le. WinSCP võidab mugavuses just selle stsenaariumi puhul.
Mida teha, kui failid on nähtavad, kuid mitte redigeeritavad?
Kontrollige omanikku ja õigusi serveris käsuga
ls -la. Kui seadistasite SFTP-serverisudokaudu, kuid ühendus langes tagasi tavalistele õigustele, tähendab see, etsudoküsis parooli ja ei saanud vastust. Kontrollige uuesti NOPASSWD seadistust 2. sammust.
Kas ma võin lihtsalt muuta süsteemifailide omaniku oma kasutajaks?
See on „räpane" lahendus. Süsteemiteenused eeldavad, et nende konfiguratsioonid kuuluvad
root-ile. Omaniku (chown) või õiguste (chmod) muutmine süsteemifailidel võib teenused katkestada. Parem on kulutada viis minutit sudo seadistamisele ja teha asju korralikult.
Mis vahe on SCP-l ja SFTP-l sudo kontekstis?
SCP on lihtsalt kopeerimine üle SSH: see võtab shelli kergemini üle, seega piisab selle jaoks käsust
sudo su -Shelli väljal. SFTP on täisväärtuslik alamsüsteem, mis töötab eraldi protsessina: see nõuab binaarfaili asendamise nippi. SFTP on kiirem ja funktsioonirikkam; SCP-d on lihtsam seadistada.
Kas toimingud on logides nähtavad, kui kasutate sudot WinSCP kaudu?
Jah. Failis
/var/log/auth.logon kirje, mis näitab, et kasutajausernametõstis õigusisudoabil. See on pluss: kui administraatoreid on mitu, näitavad logid täpselt, kes toimingu tegi. Otseseroot-sisselogimise puhul selline läbipaistvus puudub.
Mida teha, kui sudo nõuab TTY-d, kuid WinSCP seda ei paku?
Kontrollige
/etc/sudoersfailis valikutDefaults requiretty. Kui see on olemas, kommenteerige see välja (lisage rea algusesse#) või keelake see konkreetse kasutaja jaoks:Defaults:username !requiretty. Kaasaegsedsudo-rsteostused seda valikut ei toeta; probleem on asjakohane ainult vanemate serverite puhul.
Kas ma saan SFTP-d käivitada root asemel mõne teise kasutajana?
Jah. Käsk
sudo -u www-data /usr/lib/openssh/sftp-serverkäivitab seansi kasutajanawww-data. See on mugav, kui peate redigeerima veebisaidi faile ilma süsteemikatalooge puudutamata. Sudoers õigused peavad selleks sisaldama-uvalikut:username ALL=(www-data) NOPASSWD: /usr/lib/openssh/sftp-server.
Lõplik otsus: milline meetod valida
Igapäevaseks serveritööks on optimaalne esimene meetod: SFTP-serveri käsu asendamine kombineerituna kitsa NOPASSWD seadistusega ainult sftp-server jaoks. See on turvaline, ei mõjuta globaalseid seadeid ja töötab kõigil kaasaegsetel distributsioonidel.
- Kui teil on Ubuntu / Debian ja olete nõus kulutama 5 minutit seadistamisele, kasutage 1. sammu + 2. sammu ja ärge pöörduge selle probleemi juurde enam kunagi tagasi.
- Kui server on vana ja
sftp-serverasukohta ei leita, minge üle SCP-le (3. samm): see talub ebatäpsusi ja töötab praktiliselt kõikjal. - Kui haldate kümneid servereid ja soovite ühtset standardit, seadistage sshd_config (4. samm) üks kord Ansible'i või käsitsi, kuid kindlasti varukoopiaga.
Alustage kontrollist: logige serverisse SSH kaudu sisse ja käivitage cat /etc/ssh/sshd_config | grep Subsystem. Minuti pärast teate täpset asukohta ja esimene meetod töötab esimesel katsel. Millist failiedastusmeetodit teie kasutate? Jagage kommentaarides.



