Ce face ~/.ssh/config
În loc să scrii de fiecare dată ssh -p 2222 -i ~/.ssh/id_ed25519_iasi ana@203.0.113.10, pui aceste setări o dată în ~/.ssh/config sub un nume scurt și rulezi ssh server-iasi. Același alias funcționează în scp, rsync și git.
Fișierul are blocuri Host, care pot folosi măști (*.dexblog.test, *). Pentru fiecare opțiune contează prima valoare găsită, de sus în jos, așa că blocurile specifice se pun primele și Host * la final. Comanda ssh -G ALIAS afișează configurația rezultată fără să se conecteze. Setările valabile pentru toți utilizatorii sunt în /etc/ssh/ssh_config.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
Host ALIAS |
Începe un bloc pentru numele (sau masca) folosit în comanda ssh. |
HostName |
Adresa reală (IP sau domeniu) a serverului. |
User |
Utilizatorul folosit la conectare. |
Port |
Portul SSH (implicit 22). |
IdentityFile |
Cheia privată folosită pentru acest server. |
IdentitiesOnly yes |
Încearcă doar cheia din IdentityFile, nu toate cheile din agent. |
ProxyJump GAZDA |
Trece printr-un server intermediar (bastion) până la serverul final. |
ServerAliveInterval SECUNDE |
Trimite un semnal periodic ca să nu se închidă conexiunile inactive. |
Exemple
Exemplul 1: Un alias pentru serverul din Iași
-F alege fișierul de configurare (aici unul local, ca exemplul să nu atingă ~/.ssh), iar -G afișează setările finale fără conexiune. 2>/dev/null ascunde un mesaj despre terminal, care apare la unele versiuni când comanda rulează dintr-un script.
cat > config <<'EOF'
Host server-iasi
HostName 203.0.113.10
User ana
Port 2222
Host *
ServerAliveInterval 60
EOF
ssh -F ./config -G server-iasi 2>/dev/null | grep -E '^(user|hostname|port|serveraliveinterval) '
Rezultat
user ana
hostname 203.0.113.10
port 2222
serveraliveinterval 60
Exemplul 2: Prima valoare câștigă
Blocul Host * pune User root și Port 2222. Pentru server-iasi, User ana a fost găsit primul, deci rămâne; portul vine din Host *. Pentru web1.dexblog.test, utilizatorul vine din masca *.dexblog.test, iar HostName lipsește, deci se folosește chiar numele dat.
cat > config <<'EOF'
Host server-iasi
HostName 203.0.113.10
User ana
Host *.dexblog.test
User deploy
Host *
User root
Port 2222
EOF
ssh -F ./config -G server-iasi 2>/dev/null | grep -E '^(user|port) '
echo ---
ssh -F ./config -G web1.dexblog.test 2>/dev/null | grep -E '^(user|hostname|port) '
Rezultat
user ana
port 2222
---
user deploy
hostname web1.dexblog.test
port 2222
Exemplul 3: Server intern accesat printr-un bastion
Cu ProxyJump, ssh baza-date se conectează întâi la bastion și de acolo mai departe, într-o singură comandă.
# în ~/.ssh/config:
# Host bastion
# HostName 203.0.113.5
# User ana
# Host baza-date
# HostName 10.0.0.12
# User ana
# ProxyJump bastion
ssh baza-date hostname
Ieșire în terminal
db-iasi-01
Greșeli frecvente
- Punerea blocului
Host *la începutul fișierului: valorile lui câștigă în fața celor din blocurile specifice de mai jos. - Permisiuni prea largi pe fișier: SSH refuză un
~/.ssh/configpe care îl pot scrie și alții (Bad owner or permissions). Foloseștechmod 600 ~/.ssh/config.
Comenzi înrudite
ssh: Conectează în siguranță un terminal criptat la distanță pe un alt server Linux.ssh-keygen: Generează perechi de chei SSH (privată și publică), le schimbă parola și le afișează amprenta.scp: Copiază fișiere în mod securizat între mașini diferite prin tunel criptat SSH.rsync: Sincronizează fișiere și directoare rapid, transferând doar blocurile modificate (transfer delta).