Ce face ssh-copy-id
ssh-copy-id se conectează o dată la server cu parola, adaugă cheia ta publică în ~/.ssh/authorized_keys al utilizatorului de acolo și setează permisiunile corecte. De la conexiunea următoare, ssh folosește cheia.
Comanda verifică întâi ce chei sunt deja instalate și nu le adaugă de două ori. Dacă nu dai -i, alege cheile tale implicite din ~/.ssh.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-i FIȘIER |
Cheia publică de copiat (de exemplu ~/.ssh/id_ed25519_iasi.pub). |
-p PORT |
Portul SSH al serverului, dacă nu este 22. |
-n |
Probă (dry run): arată ce chei ar fi instalate, fără să modifice nimic. |
-f |
Forțează copierea, fără verificarea cheilor deja instalate. |
Exemple
Exemplul 1: Prima copiere a cheii pe server
Fără -i se folosește cheia implicită. Parola se cere o singură dată, iar mesajele de la final îți spun cum să testezi conexiunea.
ssh-copy-id ana@203.0.113.10
Ieșire în terminal
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ana/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
ana@203.0.113.10's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'ana@203.0.113.10'"
and check to make sure that only the key(s) you wanted were added.
Exemplul 2: Server pe alt port
Dacă cheia era deja pe server, nu se adaugă din nou.
ssh-copy-id -p 2222 deploy@203.0.113.20
Ieșire în terminal
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ana/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
(if you think this is a mistake, you may want to use -f option)
Exemplul 3: Ce face, simulat local
Pe server, ssh-copy-id face în esență pașii de mai jos: creează ~/.ssh cu permisiuni 700 și adaugă cheia publică într-un authorized_keys cu permisiuni 600. Aici folosim un director local în loc de server.
ssh-keygen -q -t ed25519 -N "" -C "ana@iasi" -f ./cheie
mkdir -p server/.ssh && chmod 700 server/.ssh
cat cheie.pub >> server/.ssh/authorized_keys
chmod 600 server/.ssh/authorized_keys
cut -d' ' -f1,3 server/.ssh/authorized_keys
Rezultat
ssh-ed25519 ana@iasi
Greșeli frecvente
- Rularea fără să ai o cheie generată: comanda se oprește cu mesajul că nu a găsit nicio identitate. Rulează întâi
ssh-keygen. - Dezactivarea autentificării cu parolă pe server (
PasswordAuthentication no) înainte să verifici că te poți conecta cu cheia.
Comenzi înrudite
ssh-keygen: Generează perechi de chei SSH (privată și publică), le schimbă parola și le afișează amprenta.ssh: Conectează în siguranță un terminal criptat la distanță pe un alt server Linux.~/.ssh/config: Fișierul de configurare al clientului SSH: nume scurte pentru servere, utilizator, port și cheie implicite.