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

Next revision
Previous revision
doc:appunti:linux:sa:ssh [2007/09/29 14:50] – external edit 127.0.0.1doc:appunti:linux:sa:ssh [2022/02/11 11:30] (current) – [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 5: Line 7:
 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... 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.+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: 
 + 
 +<file> 
 +user=loginname:011:000110: # Allow sftp and scp, no chroot. 
 +</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.1191070212.txt.gz · Last modified: 2010/09/29 18:32 (external edit)