Puncte:1

SFTP schimbă directorul implicit

drapel tn

Configurez SFTP pentru un grup de utilizatori pe care doresc să aibă doar acces SFTP, în scopul încărcării fișierelor pe server. Le am deja închiși în propriile directoare de acasă și am blocat conectările shell. Fiecare director principal are un subdosar pentru primirea încărcărilor. Aș dori ca conexiunile SFTP să se schimbe automat în acest folder de încărcare la autentificare. Destul de standard.

Eu folosesc ForceCommand directivă pentru a realiza acest lucru cu succes pe un server vechi.Totuși, pe noul server pe care îl pregătesc în prezent, acest lucru nu funcționează. De ce?

/etc/ssh/sshd_config.d/sftpgroup.conf
Grupul de potriviri ftpgroup
  # Următoarele două directive obligă ftpgroup să devină chrootat
  # și au doar SFTP disponibil. Nu este necesară nicio altă configurare chroot.
  ChrootDirectory /home/ftp_users/%u
  ForceCommand intern-sftp -u 0002
  # Pentru paranoia suplimentară, nu permiteți toate tipurile de redirecționări de porturi.
  AllowTcpForwarding nr
  GatewayPorts nr
  X11Redirecționare nr
  # Forțați înregistrarea locală
  ForceCommand /usr/lib/openssh/sftp-server -l VERBOSE
  # Schimbați directorul implicit în ~/upload
  ForceCommand cd /încărcare
/var/log/auth.log cu LogLevel DEBUG3
9 mar 15:18:03 MyServer sshd[393644]: debug1: userauth-request for user myuser service ssh-connection method none [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug1: încercare 0 eșecuri 0 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamallow se introduce [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 8 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamallow: se așteaptă MONITOR_ANS_PWNAM [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: type 9 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive introducerea [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 8
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow
9 martie 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config reprocess config len 383
Mar 9 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config /etc/ssh/sshd_config.d/sftpgroup.conf len 228
Mar 9 15:18:03 MyServer sshd[393644]: debug3: se verifică potrivirea pentru „Group ftpgroup,!sftpgroup” utilizator myuser host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
Mar 9 15:18:03 MyServer sshd[393644]: debug1: utilizatorul myuser nu se potrivește cu lista de grup ftpgroup,!sftpgroup la linia 4
9 mar 15:18:03 MyServer sshd[393644]: debug3: potrivire nu a fost găsită
Mar 9 15:18:03 MyServer sshd[393644]: debug3: se verifică potrivirea pentru utilizatorul „Group ftpgroup” myuser host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
9 martie 15:18:03 MyServer sshd[393644]: debug1: user myuser liste de grupuri potrivite ftpgroup la linia 9
Mar 9 15:18:03 MyServer sshd[393644]: debug3: meci găsit
9 martie 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:12 setarea ChrootDirectory /home/ftp_users/%u
9 martie 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:13 setarea ForceCommand internal-sftp -u 0002
Mar 9 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:15 setarea AllowTcpForwarding nu
Mar 9 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:16 setarea GatewayPorts nu
Mar 9 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:17 setarea X11Forwarding nu
9 martie 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:21 setarea ForceCommand cd /upload
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow: se trimite MONITOR_ANS_PWNAM: 1
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 9
9 martie 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 8 folosit o dată, dezactivând acum
9 mar 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: se configurează authctxt pentru myuser [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_start_pam introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 100 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_inform_authserv introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 4 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: încercați metoda none [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: întârziere specifică utilizatorului 0.000ms [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: ensure_minimum_time_since: a trecut 2.862ms, întârziere 4.136ms (solicitat 6.998ms) [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 100
9 martie 15:18:03 MyServer sshd[393644]: debug1: PAM: inițializare pentru „myuser”
9 mar 15:18:03 MyServer sshd[393644]: debug1: PAM: setarea PAM_RHOST la „1.2.3.4”
9 mar 15:18:03 MyServer sshd[393644]: debug1: PAM: setarea PAM_TTY la „ssh”
9 martie 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 100 folosit o dată, dezactivând acum
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 4
Mar 9 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authserv: service=ssh-connection, style=, role=
9 martie 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 4 folosit o dată, dezactivând acum
Mar 9 15:18:03 MyServer sshd[393644]: debug3: userauth_finish: failure partial=0 next methods="publickey,password" [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: trimite pachet: tip 51 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: primire pachet: tip 2 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: SSH2_MSG_IGNORE primit [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: primire pachet: tip 50 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug1: userauth-request for user myuser service ssh-connection method parola [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug1: eșecuri încercare 1 0 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: încercați parola metoda [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 12 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: se așteaptă MONITOR_ANS_AUTHPASSWORD [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 13 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive introducerea [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 12
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_passwd_conv apelat cu 1 mesaj
9 mar 15:18:03 MyServer sshd[393644]: debug1: PAM: autentificare prin parolă acceptată pentru utilizatorul meu
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authpassword: se trimite rezultatul 1
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 13
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 102
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug1: do_pam_account: numit
9 mar 15:18:03 MyServer sshd[393644]: debug2: do_pam_account: informații de autentificare în SSH_AUTH_INFO_0
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: do_pam_account pam_acct_mgmt = 0 (Succes)
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 103
9 mar 15:18:03 MyServer sshd[393644]: Parola acceptată pentru myuser de la portul 1.2.3.4 55095 ssh2
9 mar 15:18:03 MyServer sshd[393644]: debug1: monitor_child_preauth: myuser a fost autentificat de un proces privilegiat
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: Se așteaptă chei noi
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 26
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: GOT noi chei
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: utilizator autentificat [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: întârziere specifică utilizatorului 0.000ms [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: assure_minimum_time_since: a trecut 7,172 ms, întârziere 6,825 ms (solicitat 6,998 ms) [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account se introduce [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 102 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 103 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account returnează 1 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: trimite pachet: tip 52 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 26 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_send_keystate: Starea de trimitere terminată [preauth]
Mar 9 15:18:03 MyServer sshd[393644]: debug1: monitor_read_log: child log fd închis
9 martie 15:18:03 MyServer sshd[393644]: debug3: ssh_sandbox_parent_finish: terminat
9 martie 15:18:03 MyServer sshd[393644]: debug1: PAM: stabilirea acreditărilor
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sesiune de deschidere
9 mar 15:18:03 MyServer sshd[393644]: debug2: do_pam_session: informații de autentificare în SSH_AUTH_INFO_0
9 mar 15:18:03 MyServer sshd[393644]: pam_unix(sshd:session): sesiune deschisă pentru utilizatorul myuser(uid=1001) de (uid=0)
Mar 9 15:18:03 MyServer systemd-logind[607]: Noua sesiune 530 a utilizatorului myuser.
9 mar 15:18:03 MyServer systemd: pam_unix(systemd-user:session): sesiune deschisă pentru utilizatorul myuser(uid=1001) de (uid=0)
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv apelat cu 1 mesaj
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv apelat cu 1 mesaj
9 mar 15:18:03 MyServer sshd[393644]: copilul utilizator este pe pid 393672
9 martie 15:18:03 MyServer sshd[393672]: debug1: suportul SELinux dezactivat
9 martie 15:18:03 MyServer sshd[393672]: debug1: PAM: stabilirea acreditărilor
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: verificarea „/”
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: se verifică „/home/”
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: se verifică „/home/ftp_users/”
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: verificarea „/home/ftp_users/myuser”
9 martie 15:18:04 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:04 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 113
9 mar 15:18:04 MyServer sshd[393644]: debug3: se introduce mm_answer_audit_command
ssh -V

Server vechi:

  • OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d 10 septembrie 2019

Server nou:

  • OpenSSH_8.4p1 Debian-5, OpenSSL 1.1.1k 25 martie 2021

Actualizați

S-a dovedit că pe vechiul sistem, acest lucru funcționa de fapt din cauza folderelor de acasă și a link-urilor simbolice manipulate, mai degrabă decât din cauza ForceCommand directivă privind acel sistem (chiar dacă această directivă există).

ln -s /home/ftp_users/myuser /home/myuser
usermod -d /home/myuser myuser
ln -s ../upload /home/ftp_users/myuser/home/myuser

Deci, atunci când un utilizator se conectează și se schimbă la ~ se duce la /home/myuser care este o legătură simbolică pentru /încărcare. Atunci când se potrivește configurarea folderului de acasă cu sistemul vechi, noul sistem acum rutează corect la conectare. Puțin hackish și cu siguranță suboptim (încercam să-l evit tbh), dar „funcționează”.

Atunci întrebarea devine, de ce nu ForceCommand trece peste asta? Se execută deloc? Cum pot spune?

drapel cn
Versiunile sunt diferite între serverele vechi și cele noi? Puteți crește nivelul de jurnal pentru SSHD și puteți obține o ieșire de depanare?
drapel tn
Mulțumesc pentru comentariu shearn89. Postare actualizată cu jurnalele și informațiile despre versiune. Nu văd nimic în jurnalele legate de ForceCommand, în afară de când îl întâlnesc în configurație, cu excepția cazului în care nu îl recunosc?
drapel cn
Mă întreb dacă poți specifica „ForceCommand” o singură dată. Ce se întâmplă dacă puneți toate comenzile pe o singură linie, unite cu `;`?
drapel tn
Interesanta sugestie. Dar, din păcate, fără noroc. Acum primesc „EROARE FATALĂ: S-a primit un sfârșit neașteptat al fișierului de la serverul SFTP” de la FileZilla când încerc să mă conectez. Mă aștept ca `internal-sftp` să fie o comandă specială care nu poate fi legată cu alții?
Fjor avatar
drapel do
Poate că primul `ForceCommand` execută `sftp-server` și îi permite să controleze conexiunea, astfel încât următorul `ForceCommand` este executat după ce `sftp-server` se închide. Dacă acesta este cazul, `sftp-server` acceptă o opțiune `-d DIR` pentru a schimba directorul de pornire din interiorul conexiunii.
drapel tn
L-am încercat cu comanda `sftp-server` comentată, și nicio diferență. Cu toate acestea, sugestia ta mă face să cred că ar trebui să mă uit la comanda `internal-sftp` și să văd dacă pot adăuga niște argumente acolo. Multumesc pentru idee.
drapel tn
Am găsit greu sintaxa pentru `internal-sftp`, dar apoi am descoperit [acest post](https://superuser.com/a/1114989) spunând că `internal-sftp` împărtășește aceleași opțiuni ca `sftp-server`. Bine de stiut. (Este documentat undeva? Dacă da, nu o găsesc.) Sugestia ta a funcționat grozav, @Fjor, a trebuit să o folosesc pe `internal-sftp`. Ar fi bucuros să accept dacă doriți să îl trimiteți ca răspuns.
Puncte:1
drapel do

Cu sftp-server puteți adăuga opțiunea -d cale pentru a schimba directorul de pornire la conectare. Linia de configurare ar trebui să fie:

Subsistem sftp /usr/lib/openssh/sftp-server -l VERBOSE -d /upload

În versiunile ulterioare ale OpenSSH, funcția de server SFTP este disponibilă în proces ca implicit sau prin utilizarea unui intern-sftp indicator ca comanda de rulat.

@user2100826 confirmat de acest post acea intern-sftp și sftp-server partajează aceleași opțiuni de linie de comandă (dar nu pot găsi acest lucru indicat în mod explicit în documentul aferent om pagini). Vă rugăm să consultați man sftp-server pentru a verifica utilizarea ChrootDirectory cu ForceCommand sau Subsistemul.

Deci, comportamentul dorit ar putea fi configurat și de linia:

Subsistem sftp internal-sftp -l VERBOSE -d /upload

De asemenea, vă rugăm să verificați acest raspuns.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.