Languages

User login


Configurar SSH a través d'un HTTP Proxy


IndiX's picture

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

Comment viewing options

Selecciona la vostra manera preferida de visualitzar els comentaris i feu clic en "Desa la configuració" per activar els canvis.

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

IndiX's picture

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:

«It might happen that a firewall is blocking traffic from the proxy server to your SSH-server (TCP Port 22). A very nice workaround is, let your SSH-server listen on port 80 and/or 443.

 

So you will have an entry in your /etc/ssh/sshd_config like:
Port 443

Now you can use:
ssh -p 443 machine-on-the-outside-network.example.com

Or just have an entry in your .ssh/config like:Host machine-on-the-outside-network.example.com
ProxyCommand /usr/local/bin/corkscrew proxy.on-the-inside-network.example.com 3128 %h %p
port 443»

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.