User Tools

Site Tools


doc:appunti:linux:sa:ssh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:linux:sa:ssh [2010/09/29 18:32] niccolodoc:appunti:linux:sa:ssh [2022/02/11 11:30] – [rush] niccolo
Line 1: Line 1:
 ====== SSH e SFTP ====== ====== 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. 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.
Line 10: Line 12:
 user=loginname:011:000110: # Allow sftp and scp, no chroot. user=loginname:011:000110: # Allow sftp and scp, no chroot.
 </file> </file>
 +
 +==== rush ====
 +
 +In **Debian 10 Buster** non esiste il pacchetto **rssh**, al suo posto troviamo **rush**. Segue una breve ricetta su come attivare un ambiente **rush** per un utente, limitato a **ricevere dei file via sftp**.
 +
 +Si installa il server SFTP:
 +
 +<code>
 +apt install openssh-sftp-server
 +</code>
 +
 +quindi si prepara un ambiente chroot che servirà a tenere confinato l'utente remoto che accede via SFTP. La directory **/srv/rush/** occuperà circa **280 Mb** (Debian Buster):
 +
 +<code>
 +apt install rush
 +adduser --uid 1004 --gecos "Special SFTP account" --shell "/usr/sbin/rush" sftp-user
 +mkdir -p /srv/rush/
 +debootstrap buster /srv/rush/
 +</code>
 +
 +Nell'ambiente chroot si eseguono alcune operazioni:
 +
 +<code>
 +chroot /srv/rush
 +
 +apt install locales
 +dpkg-reconfigure locales
 +apt install openssh-sftp-server
 +adduser --uid 1004 --gecos "Special SFTP account" --shell "/bin/false" sftp-user
 +</code>
 +
 +Il file **/etc/rush.rc** dovrà contenere la sezione:
 +
 +<file>
 +rule sftp-rush
 +  command ^.*/sftp-server
 +  uid >= 1000
 +  set[0] /usr/lib/sftp-server
 +  umask 002
 +  chroot /srv/rush
 +  chdir ~
 +</file>
 +
 +Si dovrebbe quindi poter accedere via sftp, ma fallire via ssh:
 +
 +<code>
 +sftp -P 22 sftp-user@remote.host.com
 +sftp-user@remote.host.com's password: 
 +Connected to sftp-user@remote.host.com.
 +sftp>
 +</code>
 +
 +<code>
 +ssh -p 22 sftp-user@remote.host.com
 +sftp-user@remote.host.com's password: 
 +You do not have interactive login access to this machine.
 +Contact the systems administrator for further assistance.
 +Connection to remote.host.com closed.
 +</code>
 +
 +===== SSH su Windows =====
 +
 +Dopo aver installato il programma con l'installer di **[[http://www.cygwin.com/|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:
 +
 +<code>
 +sc \\server_name delete sshd
 +</code>
 +
 +===== 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à:
 +
 +<code bash>
 +# 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}"
 +</code>
 +
doc/appunti/linux/sa/ssh.txt · Last modified: 2022/02/11 11:30 by niccolo