User Tools

Site Tools


doc:appunti:linux:sa:ssh

This is an old revision of the document!


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 PanelAdministrative ToolsLocal Security PolicyLocal 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}"
doc/appunti/linux/sa/ssh.1619597949.txt.gz · Last modified: 2021/04/28 10:19 by niccolo