SSH — Secure Shell

ssh permet connectar-se de forma segura a màquines remotes xifrant tota la comunicació.

1. Sintaxi bàsica

ssh usuari@host
ssh usuari@host -p 2222          # port diferent
ssh host                         # usa l'usuari local actual

2. Opcions principals d’ssh

Opció Efecte
-p PORT Port de connexió (per defecte: 22)
-i fitxer Clau privada a usar
-l usuari Usuari (alternatiu a usuari@host)
-X Reenviament X11 (executa apps gràfiques remotes)
-Y Reenviament X11 de confiança (menys restriccions)
-A Reenviament de l’agent SSH (útil per saltar màquines)
-N No executa cap ordre (útil per túnels)
-f Va a segon pla abans de l’execució
-v Mode verbose (diagnòstic); -vv o -vvv per més detall
-q Mode silenciós
-C Comprimeix les dades transmeses
-T Desactiva la pseudo-terminal (útil per scripts)
-t Força la pseudo-terminal (útil per sudo remot)
-o opció=valor Passa opcions de configuració directament

3. Execució d’ordres remotes

ssh usuari@host "ls /var/log"
ssh usuari@host "df -h"
ssh usuari@host "sudo systemctl restart apache2"

# Execució d'script local en màquina remota
ssh usuari@host 'bash -s' < script_local.sh

# Múltiples ordres
ssh usuari@host "git pull && systemctl restart apache2"

4. Túnels SSH

Túnel local (accés a servei remot en port local)

# Ara http://localhost:8080 accedeix al port 80 del servidor remot
ssh -L 8080:localhost:80 usuari@host

Túnel remot (exposa un port local al servidor)

# El port 9090 del servidor apunta al port 3000 de la teva màquina
ssh -R 9090:localhost:3000 usuari@host

Túnel dinàmic (proxy SOCKS)

# Configura el navegador per usar SOCKS5 en localhost:1080
ssh -D 1080 -N usuari@host

Salt entre màquines (ProxyJump)

# Connecta a 'destinacio' passant per la màquina 'bastio'
ssh -J usuari@bastio usuari@destinacio

5. Autenticació amb claus

# Generar parell de claus
ssh-keygen -t ed25519 -C "comentari"
ssh-keygen -t rsa -b 4096

# Copiar la clau pública al servidor
ssh-copy-id usuari@host
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuari@host

# Equivalent manual
cat ~/.ssh/id_ed25519.pub | ssh usuari@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

6. Fitxer de configuració ~/.ssh/config

Evita haver d’escriure opcions llargues cada vegada:

Host servidor
    HostName 192.168.1.100
    User admin
    Port 2222
    IdentityFile ~/.ssh/clau_privada
    ForwardAgent yes

Host bastio
    HostName bastio.exemple.com
    User deploy

Host intern
    HostName 10.0.0.5
    User root
    ProxyJump bastio

Després n’hi ha prou amb:

ssh servidor
ssh intern     # salta automàticament per 'bastio'

7. SCP — Secure Copy

scp copia fitxers entre màquines usant SSH com a transport. La sintaxi és similar a cp.

scp [opcions] origen destinació

7.1 Exemples bàsics

# Local → Remot
scp fitxer.txt usuari@host:/ruta/destí/
scp fitxer.txt usuari@host:~

# Remot → Local
scp usuari@host:/ruta/fitxer.txt .
scp usuari@host:~/documents/informe.pdf /home/local/

# Remot → Remot
scp usuari1@host1:/fitxer usuari2@host2:/destí/

7.2 Opcions d’scp

Opció Efecte
-r Còpia recursiva de directoris
-P PORT Port (majúscula, diferent de ssh)
-i fitxer Clau privada
-p Preserva permisos i marques de temps
-C Comprimeix durant la transferència
-q Mode silenciós (sense barra de progrés)
-v Mode verbose
-l KBITS Limita l’amplada de banda (en Kbits/s)
-o opció Passa opcions SSH

7.3 Exemples avançats

# Còpia recursiva
scp -r directori/ usuari@host:/destí/

# Port alternatiu
scp -P 2222 fitxer.txt usuari@host:/tmp/

# Preservant permisos
scp -p fitxer.sh usuari@host:~/scripts/

# Usant configuració de ~/.ssh/config
scp fitxer.txt servidor:/tmp/

# Limitant amplada de banda (útil per no saturar la xarxa)
scp -l 1000 fitxer.iso usuari@host:/backup/

8. Alternativa moderna: rsync sobre SSH

Per transferències grans o sincronització, rsync és sovint millor que scp:

rsync -avz fitxer.txt usuari@host:/destí/
rsync -avz --progress directori/ usuari@host:/destí/

# sincronitza (esborra el que no hi és)
rsync -avz --delete origen/ usuari@host:/destí/   
rsync -avz -e "ssh -p 2222" fitxer usuari@host:/destí/
Opció rsync Efecte
-a Mode arxiu (recursiu + ho preserva tot)
-v Verbose
-z Compressió
--progress Mostra progrés
--delete Esborra al destí el que no és a l’origen
--exclude Exclou patrons
-n Simulació (dry-run, no fa res)

Més informació sobre rsync i grsync

Versions d’aquest document

Domini Públic (CC0)