Am un server web fără acces la distanță de la exterior, servește mai multe site-uri. Este în spatele firewall-ului, portul 80 este aruncat, pentru operarea site-urilor acest lucru este de ajuns. A fost necesar să se asigure accesul operațional al dezvoltatorilor terți la textele sursă ale unuia dintre site-uri. Am avut deodată dificultăți în acest sens, trebuia să mă duc.
Esența problemei este după cum urmează. Inițial, serverul a fost creat pentru a lucra intern pe toate site-urile din rețeaua locală. Nu au existat delimitări privind drepturile de acces, au lucrat cu site-uri puțin, ocazional au condus ceva. În timp, dezvoltatorii nu rămân, site-urile nu s-au schimbat. Tot controlul a trecut prin site-urile panoului administrativ.
Într-o zi au decis să actualizeze unul dintre site-uri. Ei au cerut să ofere acces la codul sursă. În principiu, nimic complicat, am crezut că aș face totul în 5-10 minute. Am urmat o cale simplă. Am decis să configurez serverul ftp. beneficiul a scris recent un articol amplu despre acest subiect.
Foarte repede a pus-o, a verificat-o din interior - totul merge bine. Am creat un utilizator de sistem, l-am prescurtat în directorul cu gazda virtuală potrivită, așezat așa cum ar trebui. Următorul lucru pentru mic. Trebuie să port portul de pe poarta de acces pentru a accesa serverul.
Chiar nu mi-a plăcut posibilitatea de a alege un firewall necunoscut, cu o grămadă de reguli. În plus, a fost imposibil să se facă o greșeală și să se întrerupă poarta de acces. Dar nimic de făcut, am decis să încerc. Informațiile de pe Internet nu se referă foarte mult la acest subiect. Pentru exemplele pe care am fost prinse nu am putut configura corect. Apoi, în eroarea de sintaxă, pur și simplu nu funcționează.
Am decis să nu pierdeți timpul pentru alegerea firewall-ului greșit pentru mine și să merg în altă direcție. Firește, m-am gândit imediat la sftp. Nu există astfel de probleme cu redirecționarea porturilor. Singurul lucru pe care nu l-am făcut înainte este limitarea accesului la sftp în cadrul unui director. Dar, după cum sa dovedit că nu este dificil, sarcina este rezolvată ușor și rapid.
Adăugați utilizatorul ssh în directorul chroot
Mai întâi, creați un nou utilizator de sistem fără coajă. În general, acest lucru nu trebuie făcut, puteți configura ssh pentru a conecta utilizatorii non-sistem. Dar nu văd o problemă cu utilizatorul sistemului. În cazul meu pentru un utilizator nu are sens să ne deranjeze unele setări suplimentare. Adăugarea unui utilizator:
Salvați și reporniți ssh. În cazul centurilor 6, comanda este:
Configurarea unei conexiuni sftp cu acces restrâns în afara unui anumit folder este completă.
Ssh eroare de proprietate rău sau moduri pentru chroot director
Puteți încerca să vă conectați prin clientul sftp. Eu în acest caz prefer să folosesc WinSCP gratuit. Cel mai probabil nu vă veți conecta și veți obține o eroare în fișierul log / var / log / secure:
Eroarea apare dacă proprietarul dosarului necesar nu este root și drepturile de acces la înregistrare sunt de la altcineva, cu excepția proprietarului. Aceasta este nuanța. În acest caz există unele inconveniente, dar în acest caz personal nu ma oprit. Facem proprietarul directorului /var/www/site.ru rădăcină, iar restul eliminăm drepturile de a scrie la el. Mai departe, în acest director sunt două foldere - una cu log-urile serverului web pentru gazda virtuală, cealaltă cu sursele site-ului. Aceste dosare pot fi orice proprietar și drepturi de acces. Deci, utilizatorul conectat poate lucra fără probleme cu codul sursă al site-ului.
concluzie
Ftp este înlocuit de sftp. Am folosit acest lucru pentru o lungă perioadă de timp pentru a accesa fișierele individuale de pe server. Dar există o mare minus - viteză pe sftp este scăzut. Când trebuie să legeți ceva voluminos, începeți să vă simțiți trist. Acest lucru trebuie luat în considerare. Este suficient să lucrezi cu sursa vitezei existente. Pentru a transfera fișiere mari, trebuie să căutați alte opțiuni de conectare, aceleași ftp sau prin vpn cifs sau nfs.
Când configurați accesul la un anumit dosar pentru un anumit utilizator SFTP, există probleme:
1. Din anumite motive, accesul funcționează doar pentru citire. La descărcarea fișierelor primesc eroarea "Încărcarea a eșuat: permisiunea a fost refuzată (3 / -31)". Dacă schimbați proprietarul acestui dosar la un utilizator nou sau modificați permisiunile dosarului la 775 sau 777, atunci conexiunea SFTP nu mai este stabilită - primesc eroarea "Eșec inițializare sesiune sftp: Canal de pornire nereușită".
2. În clientul SFTP, dosarele selectate pe server au fost salvate. Din anumite motive, accesul funcționează și pentru ei! Aceasta înseamnă că restricționarea accesului la un anumit director nu funcționează.
Am CentOS 7. Care sunt cauzele erorii și cum pot remedia această problemă?
1. S-au repetat aceleași setări ca mine? Nu mai amintesc nuanțele, dar ceea ce este scris, funcționează 100%, deoarece am scris un articol pe un exemplu real.
2. Dosarele salvate pe client nu pot afecta accesul în nici un fel. Trebuie să vă uitați la setările serverului. Acest lucru nu ar trebui să fie.