Bypass ercole.fi.infn.it

This page is only in italian because it's devoted to .fi.infn.it users.

Breve guida per bypassare ercole in modo legale ora che ci hanno tirato giù cmslab...! Le istruzioni sono abbastanza semplici, se trovate qualche errore, per favore segnalatemelo per mail.

ATTENZIONE: darò per scontato che la vostra shell è una bash, default su molti sistemi, ma non su lxplus. Per settare bash come shell definita su lxplus andate su cra.cern.ch, fate login e poi cliccate su My Details, scorrendo in basso troverete la form che vi serve.

Nel seguito assumerò che $HOME/bin sia nel path. Quindi per prima cosa creiamo la directory in questione controlliamo che sia nel PATH:

Creare la directory personale per gli eseguibili

# mkdir -p $HOME/bin
# echo $PATH | tr ':' '\n' | grep $HOME

Se dopo il secondo comando resta muto e non dice qualcosa del tipo /home/utente/bin, allora abbiamo bisogno di inserire la directory $HOME/bin nel path. Editiamo allora il file $HOME/.bashrc

ggiungiamo in fondo la linea

export PATH=~/bin:$PATH

A questo punto chiudiamo la shell sulla quale stiamo lavorando, apriamone un'altra (adesso il comando echo $PATH... di prima dovrebbe dare il risultato giusto).

Impostazione vera e propria

Prima di tutto รจ necessario creare uno script che ci apre un tunnel verso ercole. Per la precisione useremo ssh come PROXY server che gira localmente sul nostro pc. Creiamo allora un file di nome... ercole (che fatasia) e mettiamolo in $HOME/bin

# cd $HOME/bin
# echo '#!/bin/bash' > ercole
# echo 'ssh -ND 10022 mersi@ercole.fi.infn.it' >> ercole
# chmod u+x ercole

Occorre adesso configurare ssh affinché utilizzi il proxy. Per fare questo abbiamo bisogno di un piccolo programmino che si chiama connect - Niente di più semplice:

# sudo apt-get install connect-proxy

Se la vostra distro non ha connect-proxy nei repository (shame on you) beh, allora potete sempre scaricarvi il sorgente da qui compilarlo con

# gcc connect.c -o connect # per linux
# gcc connect.c -o connect -lresolv # per MacOS (ma ti devi veRRgognare)
e copiare l'eseguibile connect nella vostra directory dei binari $HOME/bin

Fatto ciò bisogna spiegare a ssh che deve utilizzare il proxy che creeremo. Editiamo dunque il file $HOME/.ssh/config (se non c'è dobbiamo crearlo) aggiungendo le seguenti linee

Host ercole.fi.infn.it
    ProxyCommand connect %h %p
Host *.fi.infn.it 192.84.145.* 193.206.190.* 
    ProxyCommand connect -S 127.0.0.1:10022 %h %p

Se questa è la prima volta che cambiate la configurazione di ssh, il file ~/.ssh/config dovrebbe contenere solo le righe di cui sopra. A questo punto abbiamo fatto: dovremo soltanto lanciare il comando

# ercole 

Una volta sola (questo accende il proxy) digitando la nostra pwd di ercole. Da quel momento in poi da qualunque altra finestra siamo liberi di fare ssh sulle macchine .fi.infn.it

Configurazione di altri programmi

Si può spiegare anche ad altri programmi di utilizzare il PROXY che creiamo con il comando ercole. Questo è dipende dal singolo programma che usiamo (ad es. firefox). Per la configurazione di altri programmi basta spiegare che il proxy server è localhost e la porta è 10022.

Ulteriore ottimizzazione di ssh

È possibile spiegare a ssh di chiederci la password per un host una sola volta. E in tutta sicurezza. Basta aggiungere le seguenti linee in cima al nostro file $HOME/.ssh/config

Host *
   ControlPath ~/.ssh/master-%r@%h:%p
   ControlMaster auto
   ForwardX11 yes

Così facendo alla prima connessione su un server ssh ci chiederà la password, mentre le successive utilizzerà come tunnel la connessione già stabilita. Unico inconveniente: la prima istanza di ssh che lanciamo (che finziona da tunnel per le successive) non si chiuderà veramente fino a che tutte le altre connessioni che sta trasportando non saranno anch'esse chiuse.