Come configurare un server SFTP con gli utenti chroot nelle proprie home directory? [duplicare]

20

Ho provato a configurare un server SFTP con più utenti che eseguono il chroot nelle loro home directory. Ho seguito il consiglio su questa guida ( Archive.org link ) e poi eseguito i seguenti comandi nelle directory dell'utente

chown root:root /home/user/
chmod 755 /home/user/

C'è una cartella aggiuntiva nella directory home di ogni utente, chiamata public , che è di proprietà del suo utente in modo da consentire loro di creare directory e caricare e rimuovere i file secondo necessità. (Questo è stato consigliato nella guida che ho menzionato prima)

Ora quando eseguo sftp -P 435 user@localhost , ottengo questo errore:

  

Scrittura fallita: pipe rotta
  Impossibile leggere il pacchetto: Connessione ripristinata dal peer

Come procedo da qui? L'idea finale è quella di fare in modo che ogni utente su un'altra macchina utilizzi FileZilla per accedere alle proprie directory home in chroot e quindi essere in grado di caricare directory e file. Tutto questo in SFTP (coz è più sicuro)

    
posta Nitin Venkatesh 17.06.2011 - 17:10
fonte

5 risposte

24

Questo articolo descrive anche come ottenere un accesso alla shell in chroot, ma dato che vuoi solo un account sftp-only, segui queste istruzioni:

Modifica /etc/ssh/sshd_config e aggiungi le linee:

SubSystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

Trova la riga UsePAM yes e commentala:

#UsePAM yes

Senza disabilitare questo, il mio server SSH si arresterebbe in modo anomalo durante il ricaricamento / il riavvio. Dato che non ho bisogno di funzioni fantasiose di PAM, va bene.

Per maggiore sicurezza, limita gli utenti che possono accedere. Se ti dimentichi di aggiungere utenti SFTP al gruppo sftp , dai loro l'accesso libero alla shell. Non è un bel scenario. Poiché SSH non può combinare AllowUsers e AllowGroups (un login deve soddisfare entrambe le regole), devi creare un altro gruppo, ad esempio ssh-users . Aggiungi gli utenti che possono accedere ( youruser sotto) su SSH:

sudo groupadd ssh-users
sudo gpasswd -a youruser ssh-users

E aggiungi la riga successiva a /etc/ssh/sshd_config :

AllowGroups ssh-users sftp

Ora procedi con la modifica delle autorizzazioni della home directory degli utenti per consentire il chroot (esempio utente sftp-user ):

sudo chown root:sftp-user /home/sftp-user
sudo chmod 750 /home/sftp-user

Crea una directory in cui sftp-user è libera di inserire qualsiasi file al suo interno:

sudo mkdir /home/sftp-user/public
sudo chown sftp-user: /home/sftp-user/public
sudo chmod 750 /home/sftp-user/public

Se riscontri problemi, controlla /var/log/syslog e /var/log/auth.log per i dettagli. Esegui ssh o sftp con l'opzione -vvv per il debug dei messaggi. Per sftp , l'opzione deve apparire prima dell'host come in sftp -vvv user@host .

    
risposta data Lekensteyn 17.06.2011 - 18:36
fonte
8

Sto usando Ubuntu LTS 12.04 e dopo un sacco di dolore, questo ha funzionato per me.

Le mie impostazioni per /etc/ssh/sshd_config

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
UsePAM yes
Match group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  1. crea gruppo sftp:

    groupadd sftp

  2. Crea un utente direttamente con il nuovo gruppo sftp allegato:

    sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false

  3. imposta i permessi per l'uso con ssh per sftp:

    chown root:root HomeFolder

    chmod 755 HomeFolder

  4. restart service:

    service ssh restart

Nota, la cartella home per il nuovo utente sftp deve essere assegnata al proprietario root.

    
risposta data Aten 16.10.2012 - 15:41
fonte
7

Volevo semplicemente aggiungere che i permessi della cartella sulla struttura delle directory devono essere impostati in un certo modo.

  

I severi requisiti di proprietà / permessi di sshd impongono che ogni   la directory nel percorso di chroot deve essere di proprietà di root e solo scrivibile   dal proprietario.

Source

Stavo riscontrando un errore molto simile e la correzione delle autorizzazioni della directory risolveva il problema per me.

    
risposta data Nathan Jones 30.09.2015 - 22:08
fonte
3

Ecco una guida passo passo per consentire:

  1. Accesso SFTP a / home / bob / upload per utente bob
  2. Blocca il blocco di SSH
  3. Utilizza nome utente / password anziché i tasti:

Per prima cosa, modifica il tuo file / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Scorri verso il basso e modifica:

PasswordAuthentication yes

e aggiungilo in fondo:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Premere Ctrl-X per uscire e salvare.

Ora aggiungi l'utente:

sudo useradd bob
sudo passwd bob

Ora aggiungi i gruppi e disattiva ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

Ora imposta le autorizzazioni:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

Tutto questo mentre è stato effettuato l'accesso come utente root (ec2-user su AMI Amazon Linux)

    
risposta data Rob Mulder 26.07.2016 - 03:28
fonte
0

Si noti inoltre che quando si aggiunge la direttiva Match al file di configurazione, qualsiasi direttiva non rilevante per ciò che si sta verificando potrebbe smettere di funzionare. Invece di commentare tutto ciò che non è compatibile, è sufficiente spostare qualsiasi sezione che includa una direttiva di corrispondenza fino alla fine del file di configurazione.

Inoltre, probabilmente le autorizzazioni devono essere impostate su 755 nella directory chroot e in tutte le directory madri e il proprietario su root: root. Personalmente, ho impostato la directory chroot sshd_config in% h, la home directory dell'utente, quindi ho impostato la directory home in cui voglio che sia, ad esempio /var/www/examplewebsite.com. Alcuni potrebbero preferire configurare una home directory chroot con una porzione statica seguita dal nome utente, come / var / www /% u, tuttavia ciò richiede che la directory chroot dell'utente corrisponda al suo nome utente, naturalmente.

Per risolvere i problemi di connessione, interrompere il servizio ssh, assicurandosi di aprire una sessione SSH o due prima per il test, quindi avviare il daemon in modo interattivo in modalità di debug per esaminare le informazioni di debug della connessione, poiché ciò potrebbe aiutare a identificare eventuali problemi e cerca come risolverli.

Comandi: servizio ssh stop; / usr / sbin / sshd -d

Assicurati di riavviare ssh dopo aver finito! Comando: service ssh start

    
risposta data RedScourge 28.01.2016 - 03:09
fonte

Leggi altre domande sui tag