This is an old revision of the document!
Table of Contents
SSH e SFTP
sftp e rssh
Per poter effettuare sftp è necessario avere una shell valida, per evitare di dare accesso shell completo si può utilizzare rssh, una shell ridotta che dovrebbe consentire solo scp, sftp, cvs, rsync e rdist.
In teoria l'utente rssh potrebbe essere confinato in una directory con un chroot, ma questo richiede una configurazione abbastanza complessa, inoltre il programma /usr/lib/rssh/rssh_chroot_helper
deve essere SUID…
Nel file di configurazione /etc/rssh.conf
si indicano quali comandi si possono eseguire nella shell, la configurazione predefinita Debian impedisce qualunque azione. Ecco un esempio per consentire sftp e scp ad un singolo utente:
user=loginname:011:000110: # Allow sftp and scp, no chroot.
SSH su Windows
Dopo aver installato il programma con l'installer di Cygwin, si esegue ssh-host-config
per configurare il servizio.
L'utente con cui gira il servizio sshd
deve avere i seguenti permessi:
Control Panel → Administrative Tools → Local Security Policy → Local Policies, click su User Rights Assignment
- Adjust memory quotas for a process
- Create a token object
- Logon as a service
- Replace a process level token
Su Windows 2003 Server i permessi devono essere assegnati manualmente. La procedura ssh-host-config
crea l'utente sshd, ma crea anche l'utente cyg_server e suggerisce di usare quello per il servizio.
Se si vuole eseguire ssh-host-config
una seconda volta conviene eliminare gli utenti sshd
e cyg_server
ed eliminare il servizio sshd
. Per eliminare gli utenti editare /etc/passwd
ed eliminare gli utenti, quindi rimuovere gli utenti anche dal pannello gestione utenti di Windows. Per eliminare manualmente il servizio sshd:
sc \\server_name delete sshd
Affidabilità di rsync su ssh
Se si esegue un rsync di grosse quantità di dati su connessione ssh e la linea non è molto affidabilie, si rischia di avere vari tipi di errore del tipo broken pipe.
Con opportune opzioni si dovrebbe aumentare l'affidabilità:
# ServerAliveInterval and ServerAliveCountMax: # * Terminate the session if server does not respond for 4 min: # 15 x 20 = 300 s => 5 min # # TCPKeepAlive: # * Detect TCP/IP network down (also temporary). # # IPQoS # * IPv4 type-of-service SSH_OPTIONS='-o ServerAliveInterval=15 -o ServerAliveCountMax=20 -o TCPKeepAlive=no -o IPQoS=reliability' rsync -avz --delete -e "ssh $SSH_OPTIONS" "${REMOTE}:${SRC_DIR}/" "${DST_DIR}"