La comanda ssh

La comanda ssh a Linux: connectar-te a servidors remots



La comanda ssh (Secure Shell) és el client que fas servir per connectar-te a un altre equip i treballar-hi com si hi fossis davant, a través d’una connexió xifrada. També serveix per executar comandes remotes, fer túnels i saltar d’un servidor a un altre. És l’eina bàsica de qualsevol persona que administri servidors Linux.

Sintaxi

ssh [opcions] [usuari@]servidor [comanda]
  • usuari: el compte a la màquina remota. Si no el poses, ssh fa servir el mateix nom d’usuari que tens en local.
  • servidor: una adreça IP, un nom de domini o un àlies definit a ~/.ssh/config.
  • comanda: si la poses, s’executa al servidor i la connexió es tanca quan acaba. Si no, obres una sessió interactiva.

Opcions més útils

OpcióQuè fa
-p portPort del servidor (per defecte, 22)
-i fitxerClau privada que vols fer servir
-l usuariUsuari remot (alternativa a usuari@)
-J saltConnecta passant per un servidor intermedi (jump host)
-L port:destí:portTúnel local: un port del teu equip porta a un destí vist des del servidor
-R port:destí:portTúnel remot: un port del servidor porta a un destí vist des del teu equip
-D portProxy SOCKS local: el trànsit surt a Internet des del servidor
-NNo executa cap comanda (només per a túnels)
-fPassa a segon pla després d’autenticar-se
-tForça un terminal (pseudo-tty) per a comandes interactives (sudo, top, vim…)
-v, -vv, -vvvMode detallat, per diagnosticar problemes de connexió o d’autenticació
-CComprimeix les dades (només ajuda en connexions lentes)
-XReenvia les finestres gràfiques (X11)
-AReenvia l’agent de claus (amb precaució, vegeu més avall)
-o opció=valorQualsevol opció de configuració, com les de ~/.ssh/config
-GMostra la configuració que s’aplicaria a un servidor, sense connectar-s’hi

Exemples

Connexió bàsica:

ssh joan@192.168.1.50

A un port diferent del 22, amb una clau concreta:

ssh -p 2222 -i ~/.ssh/id_ed25519 joan@servidor.example.com

Executar una comanda i tornar:

ssh joan@192.168.1.50 'uptime'

Una comanda que necessita un terminal (per exemple, perquè sudo et demani la contrasenya):

ssh -t joan@192.168.1.50 'sudo apt update'

Saltar a un servidor intern a través d’un servidor accessible des de fora:

ssh -J joan@bastio.example.com joan@10.0.0.20

Accedir a una base de dades MariaDB/MySQL que només escolta a localhost del servidor, a través d’un túnel (connectaràs al port 3307 del teu equip):

ssh -N -L 3307:127.0.0.1:3306 joan@servidor.example.com

Copiar un directori comprimit d’un servidor a l’altre sense fitxers intermedis:

tar -czf - projecte/ | ssh joan@192.168.1.50 'tar -xzf - -C /home/joan/'

Veure per què no funciona una connexió:

ssh -v joan@192.168.1.50

Seqüències d’escapament

Si una sessió es queda penjada (per exemple, perquè s’ha tallat la xarxa), no cal tancar el terminal. Prem Retorn, després ~ i després .: ssh es tanca immediatament. Altres seqüències útils:

SeqüènciaQuè fa
~.Tanca la connexió
~#Llista les connexions reenviades
~CObre una línia de comandes per afegir túnels en calent
~?Mostra totes les seqüències

La primera connexió i known_hosts

La primera vegada que et connectes a un servidor, ssh et mostra l’empremta de la seva clau i et pregunta si la vols acceptar. Si respons yes, la desa a ~/.ssh/known_hosts. Si més endavant la clau canvia, veuràs un avís gros (REMOTE HOST IDENTIFICATION HAS CHANGED) i ssh no et deixarà connectar. Pot ser que hagis reinstal·lat el servidor, o que algú s’estigui fent passar per ell. Si saps que és el primer cas, esborra la clau antiga amb:

ssh-keygen -R 192.168.1.50

Compte amb…

  • -A (reenviament de l’agent). Qualsevol amb permisos de root al servidor pot fer servir el teu agent mentre estiguis connectat, i entrar amb les teves claus a altres servidors. Si només el necessites per saltar a una altra màquina, fes servir -J, que no té aquest risc.
  • -X té un risc semblant amb la teva sessió gràfica. Fes-lo servir només en servidors de confiança.
  • Contrasenyes a l’historial. No posis mai contrasenyes a la línia de comandes. Fes servir claus.

Articles relacionats