Proxy settings on linux shell

Possiedo un portatile aziendale, e spesso mi trovo a fare operazioni sul mio terminale linux, che hanno bisogno di accessi ad internet. Niente di nuovo, certo! ho, però, il problema della  mia rete aziendale… esiste un proxy con autenticazione che mi controlla.

Ciò mi porta ad inserire mille volte la password del proxy (e non sono il tipo da “ricorda password”) perchè non mi piace che la mia macchina metta le credenziali al posto mio.

OK, è paranoia, ma ho scoperto di non essere il solo… e soprattutto se parliamo della shell.

Questo veloce tutorial presenta e spiega il mio script; esso imposta “a caldo” il proxy nella proprio shell di lavoro, spero che ti sia utile.

Questione di variabili

Per avere il setting del proxy sulla propria shell sono necessarie diverse variabili di ambienti, io le ho raccolte ed in pratica le imposto tutte; ecco la mia lista:

 
odyssey@Itaca:/opt/bin/tmp$ env | grep proxy

ftps_proxy=ftps://utente:password@proxy-hostname:9999
http_proxy=http://utente:password@proxy-hostname:9999
PROXYHOST=utente:password@proxy-hostname:9999
ftp_proxy=ftp://utente:password@proxy-hostname:9999
proxy_passwd=password
https_proxy=https://utente:password@proxy-hostname:9999
proxy_user=utente

Questioni di sicurezza

Purtroppo quella password in chiaro non mi piace assolutamente, ma se parliamo di variabili di ambiente non posso (o quantomeno io non conosco modo di ) nasconderle. Mi rincuora che chiudendo il terminale tali settaggi scompaiono come se fossero neve al sole.

Per tutto il resto invece ho cercato di far scomparire le tracce della mia password. In effetti se si esegue un set esplicito di quelle variabili, le informazioni vengono memorizzate nella history della shell.
Per evitare questo una prima versione dello script venivano chiesti i dati semsibili tramite il comando shell
read
In questo modo non lasciamo nulla nella storia delle istruzioni. In pratica sarebbe bastato un

read "Enter your username:" user

Obbiettivamente scrivere ogni volta il mio nome, è un pò una scocciatura; a tal proposito mi sono ingegnato a fornire alla read almeno un default. Ecco le istruzioni:

PROXY_DEFAULT_USER="staniscia"
read -e -i "$PROXY_DEFAULT_USER" -p "Please enter username: " input
user="${input:-$PROXY_DEFAULT_USER}"

In questo modo ho un comodissimo messaggio con annessa risposta di default; basta solo premere invio.

Come NON mostrare la password a video

Ho ancora un problemino con l’inserimento della password a video; la “read” mostra ciò che inseriamo! come risolvo il problema?
disabilitando l’output a video con i seguenti domandi:

echo -n "Please enter password:"
stty -echo
read pwdr
stty echo
echo ""

Tutto il codice

Ecco tutto il codice, e tutto a vostra disposizione, aspetto commenti e migliorie, un saluto

 

Leave a Reply