Per la meva feina de desenvolpador web, tenir accés per SSH a diferents servidors és imprescindible. Un cop connectat amb guifi.net vaig veure que el fet d'estar darrera d'un proxy com squid em feia imposible operar amb normalitat des de la línia de comandes (també coneguda per l'acrònim CLI en anglès) i, per tant, havia de trobar una solució. No m'extendré en detalls perquè una cerca a can google sobre "ssh tunneling" ens donarà tots els detalls tècnics que poguem necessitar i més.
Per aconseguir accés ssh als servidors que necessito controlar el que he fet és instal·lar Corkscrew i configurar el meu client ssh perquè l'utilitzi:
Primer, he creat (si ja el tenim només l'haurem d'editar) l'arxiu .ssh/config a la home del meu usuari (linux i macosx) i afegir-hi aquesta línia:
ProxyCommand /usr/local/bin/corkscrew IP-del-Proxy Port-del-Proxy %h %p ~/.ssh/myauth
Crear l'arxiu .ssh/myauth on he posat el login i el password que faig servir a guifi.net per l'squid, amb el format login:password
Llestos! A partir d'aquí, cada cop que utilitzi l'ssh aquest farà servir el corkscrew per loguejar-me al proxy i permetre'm l'accés als servidors remots.
Una aplicació d'aquesta tècnica (SSH tunnel) em permet també tenir accés des de la línia de comandes a servidors remots de MySQL (amb PostgreSQL també funciona). Per aquest cas només caldrà quelcom així:
$ ssh -f -N -L 3307:127.0.0.1:3306 usuari@servidor_remot
No m'extendré tampoc ara en detalls. Només comentar que els ports poden variar, a mi em funciona bé així però.
I ara, per connectar al servidor MySQL:
mysql -u usuari_mysql -p password_mysql -h127.0.0.1 -P3307
Llestos de nou, ja tenim accés als servidors MySQL remots quan no hi ha disponible una interficie web com phpmyadmin o, sencillament, quan preferim accedir-hi des de CLI per qualsevol motiu, com és el meu cas tot sovint.
Salut!
Comentaris
Compartir coneixement
Gràcies per l'aportació, segur que ajudarà a la gent que ho necessita !!!
Canvi de port?
No ho he provat fa temps, hi havia un comesfa similar:
http://www.guifi.net/gl/node/15298
No cal que el sshd del servidor al que connectis escolti pel port 443, o algun altre port que passi pel proxy com a "SSL_port"? Es a dir, directe?
J
No cal canviar el port
Pel que fa al sshd, pot escoltar el port 22 (per defecte) i prou. De fet així ho fan els servers que he provat fins ara.
Només hi haurà problemes si hi ha pel mig un firewall que bloquegi el tràfic del proxy al servidor ssh (port TCP 22). Si és així, fer escoltar l'sshd al port 443 pot solventar el problema. Cito, en anglès, una resposta més àmplia al que preguntes:
Salut!
Port 22 squid
Es que per defecte hem sembla que l'squid no deixa passar les connexions al port 22. Per tant, per fer tot això a través d'un squid amb la configuració per defecte, cal que canviis el port pel que escolta el sshd al 80 o 443.
Ho dic per si algú ho prova i no se'n surt.