<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/dev/random &#187; backup</title>
	<atom:link href="http://alex.amiran.it/tag/backup/feed/" rel="self" type="application/rss+xml" />
	<link>http://alex.amiran.it</link>
	<description></description>
	<lastBuildDate>Sun, 08 Jan 2012 15:49:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image>
<link>http://alex.amiran.it</link>
  <url>http://alex.amiran.it/wp-content/themes/shu-ok/img/favicon.png</url>
  <title>/dev/random</title>
</image>
		<item>
		<title>Rsync via SSH</title>
		<link>http://alex.amiran.it/20080123/rsync-via-ssh/</link>
		<comments>http://alex.amiran.it/20080123/rsync-via-ssh/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 13:04:59 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[reti]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sicurezza]]></category>

		<guid isPermaLink="false">http://alex.amiran.it/20080123/rsync-via-ssh/</guid>
		<description><![CDATA[Come sincronizzare dati tra due computer senza installare servizi sul server. SSH continua a stupirmi ogni giorno. Sapevo che permetteva di trasferire file, tramite protocollo SFTP, come se si trattasse si un FTP (e con Nautilus si possono vedere i server remoti come fossero cartelle locali). Sapevo che ci si potesse forwardare X attraverso, anche [...]]]></description>
			<content:encoded><![CDATA[<p class="caption"     style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;font-style: italic; padding: 0 1em;font-style: italic; padding: 0 1em;">Come sincronizzare dati tra due computer senza installare servizi sul server.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">SSH continua a stupirmi ogni giorno. Sapevo che permetteva di trasferire file, tramite protocollo SFTP, come se si trattasse si un FTP (e con Nautilus si possono vedere i server remoti come fossero cartelle locali). Sapevo che ci si potesse forwardare X attraverso, anche se non ho ancora mai provato. Sapevo che ci si potevano fare tunnel generici. Ieri ho scoperto che lo si può usare come <a href="http://www.technovelty.org/linux/easy-vpn.html"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">proxy SOCKS</a> verso un proprio server, in modo da navigare &#8220;protetti&#8221; anche da reti pubbliche.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Oggi ho scoperto che lo si può usare direttamente da rsync senza bisogno di configurare nulla sul server. A patto di avere rsync installato sul server, naturalmente, ma non è necessario configurarlo in modalità daemon, né definire le &#8220;share&#8221;  da esportare o le protezioni da attuare. Una porta aperta in meno! Vediamo come fare&#8230;<span id="more-72" ></span></p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Uso di base</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Per un uso normale, con autenticazione tramite password, si può usare direttamente rsync, aggiungendo un solo parametro, oltre ai soliti utente, nome server, cartella remota e cartella locale:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;"> rsync -ravz -e ssh utenteremoto@serverremoto:/path/alla/dir/remota/ /path/alla/dir/locale/</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Fatto. Non serve altro. Le opzioni che ho usato sono quelle classiche: a per  mantenere i permessi, r per fare una copia ricorsiva, v per aumentare la &#8220;verbosità&#8221; dell&#8217;operazione, z per comprimere i file in transito (utile se si fanno backup di log non compressi o di file di testo). L&#8217;opzione -e è quella che ci interessa qui: specifica la shell remota da utilizzare per la copia. rsync richiamerà automaticamente il suo omologo sul server remoto e gestirà automaticamente le differenze tra i file. In questo caso specifichiamo ssh come shell remota.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Seguono il nome utente (sul server), il nome del server stesso (o il suo IP) e il path alla directory che vogliamo copiare, raggruppati. Quindi il path locale dove vogliamo copiare i file. Sarà sufficiente invertire questi due componenti (prima il locale e poi il remoto) per caricare i file sul server, invece di scaricarli. Rimangono validi tutti gli altri switch di rsync (cancellazione dei file, tipi di controllo per determinare l&#8217;aggiornamento, ecc.)</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Naturalmente questo sistema ci chiederà la password dell&#8217;utente sul server remoto ogni volta che faremo la sincronizzazione, quindi è poco adatto ad essere usato, per esempio, con cron.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Autenticazione tramite chiavi pubblica e privata</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Per questo ci viene in aiuto ssh. Possiamo generare una coppia di chiavi, una pubblica e una privata, da utilizzare per autenticarci sul server senza bisogno della password. Ecco il comando per generarla:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">ssh-keygen -t dsa -b 1024 -f chiave-ssh</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questo comando crea una chiave DSA a 1024 bit e la memorizza in due file: la parte privata nel file &#8220;chiave-ssh&#8221;, e quella pubblica in &#8220;chiave-ssh.pub&#8221;.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La chiave privata va tenuta al sicuro, non deve essere vista da nessuno. Assicuratevi che abbia permessi 600 (rw&#8212;&#8212;-) e come proprietario l&#8217;utente stesso. Copiatela in ~/.ssh (la cartella .ssh nella home dell&#8217;utente), e assicuratevi che la stessa cartella .ssh abbia permessi 700 (rwx&#8212;&#8212;).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La chiave pubblica, invece, mandatela sul server in qualche modo. Io ho attivato SFTP, quindi mi basta un</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">scp chiave-ssh.pub utenteremoto@serverremoto:~/</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ora collegatevi al serverremoto, e aggiungete questa chiave al portachiavi, che si chiama authorized_keys e si trova, sorpresa sorpresa, nella directory .ssh</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">cat chiave-ssh.pub &gt;&gt;.ssh/authorized_keys</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Poi potete cancellare il file con la chiave pubblica, tanto lo avete appena accodato al portachiavi (attenzione a non fare il redirect con un solo &gt;, altrimenti cancellerete eventuali altre chiavi pubbliche conservate lì dentro).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Assicuratevi che anche questo file (authorized_keys) abbia permessi 600.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Abbiamo concluso la fase preparatoria, ora potrete usare la chiave pubblica sia per loggarvi su quel server via ssh, sia per fare SFTP, sia con rsync. Per esempio, per collegarvi:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">ssh -i .ssh/chiave-ssh utenteremoto@serverremoto</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Mentre per usare rsync dovrete ricordare di racchiudere la linea di comando di ssh tra virgolette:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">rsync -e "ssh -i .ssh/chiave-ssh" utenteremoto@serverremoto:/dir/da/copiare /dir/locale/</pre>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;"> Una piccola dritta</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Il sistema descritto sopra è ottimo per tenere le chiavi separate tra diversi server. In pratica potete avere una coppia di chiavi (pubblica e privata) per ogni server al quale dovete collegarvi.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma potete anche semplificare il processo e usare la stessa coppia di chiavi per tutti i server. In questo caso generate le chiavi e memorizzate la parte pubblica su tutti i server come ho scritto sopra. In locale, invece, copiate la chiave privata nella directory .ssh ma chiamatela &#8220;id_dsa&#8221; (per le chiavi DSA) o &#8220;id_rsa&#8221; (per le chiavi RSA):</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">cp chiave-ssh .ssh/id_dsa</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Assicuratevi sempre che abbia permessi 600.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Così facendo non sarà più necessario specificare la parte &#8220;-i nomechiaveprivata&#8221;, perché ssh se la andrà a cercare direttamente.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Possibili problemi</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ricordate che se perdete la chiave privata dovrete entrare col solito sistema a password, ma se qualcuno ve la ruba potrà entrare su tutti i server che la utilizzano senza bisogno di altre autorizzazioni! In questo caso conviene fare immediatamente il giro di tutti i server e rimuovere la chiave pubblica dal file authorized_keys, e quindi rigenerare una nuova coppia di chiavi (sono sempre diverse).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Se il login automatico non funziona, verificate sul server che non siano disabilitati i login con chiave pubblica (di solito nel file /etc/ssh/sshd_config):</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">RSAAuthentication     yes
PubkeyAuthentication  yes
AuthorizedKeysFile    .ssh/authorized_keys</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Consiglio di usare l&#8217;autenticazione DSA, e possibilmente di disabilitare il protocollo SSH1 e lasciare attivo solo SSH2, molto più sicuro.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Se ancora non funziona niente, aumentate il logging di ssh sul server tramite il parametro LogLevel (potete impostarlo a DEBUG per avere molto output, o a DEBUG3 per averne anche troppo).</p>
]]></content:encoded>
			<wfw:commentRss>http://alex.amiran.it/20080123/rsync-via-ssh/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

