ssh-keygen: SSH anahtarı oluşturma, açık anahtar kaydı ve ssh-copy-id kullanımı

Test ortamıRHEL ailesiAlmaLinux 9.8root hesabı2026-11-05 tarihinde kontrol edildi
Ağ komutlarıssh-keygenssh-copy-idKonum/usr/bin/ssh-keygen

ssh-keygen, SSH bağlantısında kullanılan özel anahtar ve açık anahtar çiftini oluşturan, ayrıca parmak izi kontrolü, parola değiştirme ve known_hosts temizliğini de üstlenen OpenSSH komutudur. Bir AlmaLinux 9 sunucusunda ed25519 ve rsa anahtarları oluşturup parmak izlerini kontrol ettim, parolayı ve yorumu değiştirdim, ardından ssh-copy-id'yi dry-run ile denedim: sunucuya giden tek şey .pub dosyasındaki tek satırlık açık anahtardı.

Aşağıdaki çıktıdaki hesap adları ve anahtar dosyası yolları örnek değerlerdir; parmak izleri, açık anahtarlar ve randomart, bu yazı için oluşturulup sonra silinen anahtarlara aittir. Açık anahtarı sunucuya gerçekten kaydeden komut yalnızca yazıldı, çalıştırılmadı.

1️⃣ ssh-keygen ile anahtar oluşturma: -t ed25519 ve -C yorumu

Anahtar ssh-keygen -t tür -C yorum biçiminde oluşturulur. -t anahtar türüdür, -C ise açık anahtarın sonuna eklenen yorumdur; buraya e-posta adresi veya anahtarın amacı yazılır. Aşağıda dosya -f ile belirtilmiş ve iki parola sorusunda doğrudan Enter'a basılmış hâlinin tam çıktısı var.

ssh-keygen -t ed25519 -C "user@example.com" -f ~/.ssh/id_ed25519
Generating public/private ed25519 key pair.
Enter passphrase for "/home/user/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|     .           |
|    o o          |
|     = o   .     |
|    =   Soo .    |
|     = *+*.. .   |
|    o.B.o++ .    |
|    .=o*Eo.+     |
|    o+=@OO=      |
+----[SHA256]-----+

Parola sorusunda yalnızca Enter'a basarsanız anahtar parolasız olur. -f'yi atlarsanız parola sorusundan önce dosyanın nereye kaydedileceğini soran bir satır çıkar. Parantez içinde ev klasörünüzün altındaki varsayılan yol .ssh/id_ed25519 yazar ve burada da yalnızca Enter'a basınca anahtar o yola kaydedilir.

Çıktının sonundaki randomart, parmak izinin resme dönüştürülmüş hâlidir. Anahtarı oluştururken ve -lv ile yeniden kontrol ederken aynı resim çıktı.

ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
-rw------- 1 user user 411 Oct 29 08:22 /home/user/.ssh/id_ed25519
-rw-r--r-- 1 user user  98 Oct 29 08:22 /home/user/.ssh/id_ed25519.pub

Özel anahtar 600, açık anahtar 644 izniyle oluşturuldu. Özel anahtarı yalnızca kendi bilgisayarınızda tutun ve hiçbir yere göndermeyin.

cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.com

Açık anahtar; anahtar türü, anahtar değeri ve yorumun boşlukla birleştiği tek bir satırdır. Bağlanacağınız sunucudaki authorized_keys dosyasına giren de bu satırdır. Klasördeki dosyaların görevleri bir ağaçta toplandı.

~/.sshAnahtarların ve bağlantı kayıtlarının toplandığı klasör · izin 700
id_ed25519Özel anahtar · yalnızca kendi bilgisayarınızda duran dosya · izin 600
id_ed25519.pubTek satır açık anahtar · bağlanılacak sunucudaki authorized_keys'e girer · izin 644
authorized_keysBu sunucuya giriş yapabilecek açık anahtarların listesi (alıcı sunucuda bulunur)
known_hostsBağlandığınız sunucuların ana bilgisayar anahtarları · ssh-keygen -R ile satır satır silinir
configSunucu başına takma ad, port ve anahtar dosyası (ssh_config)

2️⃣ ssh-keygen seçenekleri: -f, -N, -b, -q

Sorulara yanıt vererek oluşturmak elle yazarken kolaydır, ancak bir betikte soruların tamamen kalkması gerekir. Dosyayı -f ile, parolayı -N ile verirseniz anahtar hiç sormadan hemen oluşturulur.

ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N "" -C "deploy@example.com"
Generating public/private ed25519 key pair.
Your identification has been saved in /home/user/.ssh/deploy_key
Your public key has been saved in /home/user/.ssh/deploy_key.pub
The key fingerprint is:
SHA256:Rhk2/tgn59K8jtvDWJTOLiYnToM8t4gkdaMfu6TJ0oM deploy@example.com
The key's randomart image is:
+--[ED25519 256]--+
|        +        |
|       o +       |
|        +    .   |
|       . +  o    |
|    . o S ++o    |
|   . + +   B+    |
|  .oo * + .=+    |
|  E+o* Boo=++.   |
|   .=.=oo=o++.   |
+----[SHA256]-----+

-N'nin ardından boş tırnak verince anahtar parolasız oluştu; kayıt yeri ve parmak izi hiçbir soru olmadan tek seferde çıktı.

ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N ""
Generating public/private ed25519 key pair.
/home/user/.ssh/deploy_key already exists.
Overwrite (y/n)?

Aynı adla yeniden çalıştırınca already exists ardından üzerine yazılıp yazılmayacağını soruyor. n'ye basınca hiçbir şey değişmedi ve çıkış kodu 1 ile bitti. Kullanımdaki bir anahtarın üzerine yanlışlıkla yazmamak için yeni anahtarları başka bir adla oluşturun.

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -C "user@example.com"
Generating public/private rsa key pair.
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:f+uwCSQjMka1BEHzXADwIWbrlbVRiP6Z4tjnwNwPVAA user@example.com
The key's randomart image is:
+---[RSA 4096]----+
|o=BE*=+.         |
|oo.Oo++          |
| .+o+. .         |
|....  .          |
| .+ o.= S        |
| .o+o= + .       |
|  ++.o  . o .    |
| . o..o  . = .   |
|    o. .  o.o    |
+----[SHA256]-----+

rsa'da -b uzunluğu belirler. Kılavuza göre varsayılan değer 3072 bittir; yukarıda anahtar 4096 bit ile oluşturuldu ve randomart başlığında RSA 4096 göründü. Kılavuzda ed25519'un uzunluğunun sabit olduğu, bu yüzden -b verilse de yok sayıldığı yazıyor.

ssh-keygen -f ~/.ssh/default_key -N "" -C "user@example.com"
Generating public/private ed25519 key pair.
Your identification has been saved in /home/user/.ssh/default_key
Your public key has been saved in /home/user/.ssh/default_key.pub
The key fingerprint is:
SHA256:mwy02fpKxjxEVvLC2EUJeaMIiNFOVS0GwWVjN9v0j4c user@example.com
The key's randomart image is:
+--[ED25519 256]--+
|o+ o+=O=*..      |
|o + .*+B== .     |
| o ..oB+o.. .    |
|  . .+.=     +   |
|      = S   E o  |
|     + + o   .   |
|      B +        |
|     o o         |
|      ...        |
+----[SHA256]-----+

-t atlanınca bir ed25519 anahtarı oluşturuldu.

ssh-keygen -q -t ed25519 -f ~/.ssh/backup_key -N "" -C "backup@example.com"; echo rc=$?
rc=0

-q eklenince parmak izi ve randomart dahil her şey gizlenir, yalnızca çıkış kodu kalır. Birden çok sunucu için anahtarları bir betikle oluştururken kullanılır.

📌 Başlıca seçenekler: bu yazıda çalıştırılan sonuçlar

SeçenekGörevBu yazıdaki sonuç
-t türOluşturulacak anahtar türüÇıktının ilk satırında ed25519, rsa gibi tür görünür; verilmezse ed25519
-C yorumAçık anahtarın sonuna eklenen yorumcat ile görülen açık anahtarın sonunda user@example.com
-f dosyaAnahtar dosyası yolu/home/user/.ssh/deploy_key yoluna kaydedildiğini söyleyen satır; aynı adla yeniden çalıştırınca already exists ve Overwrite (y/n)?
-N parolaYeni parola (passphrase); boş tırnak parolasız demektirParola sorusu olmadan kayıt yeri ve parmak izi tek seferde
-b bitAnahtar uzunluğursa'ya 4096 verilince randomart başlığında RSA 4096
-qTüm çıktıyı gizlerYalnızca echo ile yazdırılan rc=0 satırı kalır
-lAnahtar dosyasının parmak izini yazdırırAçık ve özel anahtardan aynı SHA256 parmak izi; authorized_keys için anahtar başına bir satır
-E karmaParmak izinin karma türünü belirler-E md5 ile MD5:00:7b:02:5e ile başlayan parmak izi
-v-l ile birlikte verilince randomart da yazdırılırAnahtar oluşturulurken çıkanla aynı randomart
-yÖzel anahtardan açık anahtarı çıkarıp yazdırır.pub dosyasıyla harfi harfine aynı tek satırlık açık anahtar
-pÖzel anahtarın parolasını değiştirirYeni parolayla kaydedildiğini söyleyen satır çıkar; özel anahtar 411 bayttan 464 bayta çıkar
-P parolaEski parola (şu an ayarlı olan)Doğru parolayla açık anahtar, yanlış parolayla incorrect passphrase supplied to decrypt private key
-cYorumu değiştirir; yeni yorum -C ile verilirOld comment: user@example.com ve Comment 'user@laptop' applied
-F ana_bilgisayarknown_hosts içinde o ana bilgisayarın satırını bulur# Host 192.0.2.10 found: line 1 ve o satır
-R ana_bilgisayarknown_hosts içinden o ana bilgisayarın satırını silerknown_hosts updated ve özgün dosya known_hosts.old; olmayan ana bilgisayar için not found
-Hknown_hosts içindeki ana bilgisayar adlarını ve adresleri karma hâline getirir|1| ile başlayan satırlara dönüşür ve .old dosyasında karma öncesi satırların kaldığını söyleyen bir WARNING çıkar

📎 Diğer seçenekler: resmî kılavuza göre

SeçenekGörev
-a turÖzel anahtar kaydedilirken KDF (bcrypt_pbkdf) tur sayısı; arttıkça parola kontrolü yavaşlar ve kaba kuvvete karşı dayanıklılık artar; varsayılan 16
-AEksik ana bilgisayar anahtarlarını her varsayılan tür (rsa, ecdsa, ed25519) için varsayılan yollarda oluşturur
-BAnahtar dosyasının bubblebabble özetini yazdırır
-eOpenSSH anahtarını -m biçimine (varsayılan RFC4716) çevirip yazdırır; başka SSH programları için
-i-m biçimindeki (varsayılan RFC4716) parolasız anahtarı OpenSSH biçimine çevirip yazdırır
-m biçimAnahtar biçimini belirler (RFC4716, PKCS8, PEM); -p ile birlikte özel anahtarları OpenSSH ve PEM biçimleri arasında çevirir
-r ana_bilgisayarAçık anahtardan o ana bilgisayar adının SSHFP DNS kaydını yazdırır
-s CA_anahtarıBir CA anahtarıyla açık anahtarı imzalayıp sertifika oluşturur
-LSertifikanın içeriğini yazdırır
-KFIDO kimlik doğrulayıcısında saklanan resident anahtarları geçerli klasöre indirir
-Y signBir dosyayı SSH anahtarıyla imzalar; imza, dosya adının sonuna .sig eklenerek kaydedilir, kullanım adı -n ile verilir

3️⃣ ssh-keygen -l ile parmak izi kontrolü ve -y ile açık anahtarı çıkarma

Birden çok anahtar dosyası varsa hangi açık anahtarın hangi özel anahtarın eşi olduğunu yalnızca dosya adından anlamak zordur. Parmak izi özel ve açık anahtarda aynı değeri verdiği için iki dosyanın parmak izini -l ile karşılaştırarak eşleşmeyi doğrulayabilirsiniz.

ssh-keygen -l -f ~/.ssh/id_ed25519.pub
256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)
ssh-keygen -l -f ~/.ssh/id_ed25519
256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)

Açık anahtar dosyası ile özel anahtar dosyasından aynı SHA256 parmak izi çıktı. Baştaki 256 anahtar uzunluğu, sondaki parantez ise anahtar türüdür.

ssh-keygen -l -E md5 -f ~/.ssh/id_ed25519.pub
256 MD5:00:7b:02:5e:b8:ba:85:0c:32:d7:15:7e:72:45:f7:bc user@example.com (ED25519)

-E md5 eklenince eski biçim olan MD5 parmak izine geçilir. Eski bir sunucu ya da yönetim ekranı MD5 parmak izi gösterdiğinde karşılaştırmak için kullanılır.

ssh-keygen -lv -f ~/.ssh/id_ed25519.pub
256 SHA256:c73KJh85pPijvy43kS1uaQo77fSsGlE4Wz+aMF+sTy8 user@example.com (ED25519)
+--[ED25519 256]--+
|                 |
|     .           |
|    o o          |
|     = o   .     |
|    =   Soo .    |
|     = *+*.. .   |
|    o.B.o++ .    |
|    .=o*Eo.+     |
|    o+=@OO=      |
+----[SHA256]-----+

-v ile birlikte verince randomart yeniden çıkar. Anahtar oluşturulurken yazdırılan resimle aynıydı.

ssh-keygen -l -f ~/.ssh/authorized_keys
256 SHA256:Rhk2/tgn59K8jtvDWJTOLiYnToM8t4gkdaMfu6TJ0oM deploy@example.com (ED25519)

authorized_keys gibi birden çok açık anahtar satırı olan bir dosya verirseniz her anahtar için bir satır parmak izi çıkar. Sunucuda hangi anahtarların kayıtlı olduğunu bu yolla kontrol edersiniz.

ssh-keygen -y -f ~/.ssh/id_ed25519
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.com

-y, özel anahtardan açık anahtarı yeniden çıkarır. .pub dosyasını sildiyseniz ya da başka bir bilgisayara yalnızca özel anahtarı taşıdıysanız bu çıktıyı bir dosyaya kaydetmeniz yeterlidir. Çıktı, özgün .pub dosyasıyla harfi harfine aynıydı.

4️⃣ ssh-keygen -p ile parola değiştirme ve -c ile yorum değiştirme

Özel anahtara parola (passphrase) koyarsanız dosya sızsa bile parola olmadan kullanılamaz. Buna karşılık her bağlantıda parolayı yazmanız gerekir; bu yüzden insanların elle bağlandığı anahtarlara uygundur, cron gibi kendiliğinden çalışan betiklerin anahtarlarına uygun değildir.

ssh-keygen -p -f ~/.ssh/id_ed25519 -P "" -N "example-pass"
Key has comment 'user@example.com'
Your identification has been saved with the new passphrase.

-P eski parola, -N yeni paroladır. Anahtarın parolası olmadığı için -P'ye boş tırnak verildi ve yeni parolayla yeniden kaydedildiğini söyleyen iki satır çıktı. Kılavuzda seçeneksiz yalnızca -p verilirse eski ve yeni parolanın sırayla sorulduğu yazıyor.

ls -l ~/.ssh/id_ed25519
-rw------- 1 user user 464 Oct 29 08:22 /home/user/.ssh/id_ed25519

Parola konduktan sonra özel anahtar dosyası 411 bayttan 464 bayta büyüdü.

ssh-keygen -y -f ~/.ssh/id_ed25519 -P "example-pass"
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.com
ssh-keygen -y -f ~/.ssh/id_ed25519 -P "wrongpass"
Load key "/home/user/.ssh/id_ed25519": incorrect passphrase supplied to decrypt private key

Parolalı bir anahtarda -y için de parolanın -P ile verilmesi gerekir. Doğru parolayla öncekiyle aynı açık anahtar çıktı, yanlış parolayla incorrect passphrase hatasıyla bitti. Kılavuz kaybolan bir parolayı geri almanın yolu olmadığını belirtiyor; parolayı unutursanız yeni bir anahtar oluşturup açık anahtarı yeniden kaydedin.

ssh-keygen -c -C "user@laptop" -f ~/.ssh/id_ed25519 -P "example-pass"
Old comment: user@example.com
Comment 'user@laptop' applied
cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@laptop

-c yorumu değiştirir. Eski ve yeni yorum birer satır olarak çıkar ve açık anahtar dosyasının sonundaki yorum da user@laptop oldu. Yorum yalnızca anahtarları ayırt etmeye yarayan bir etiket olduğu için anahtar değerinin kendisi değişmedi.

ssh-keygen -p -f ~/.ssh/id_ed25519 -P "example-pass" -N ""
Key has comment 'user@laptop'
Your identification has been saved with the new passphrase.

Parolayı kaldırmak için -N'ye boş tırnak verin. Aynı iki satır çıkar ve bundan sonra -y yeniden -P olmadan çalıştı.

5️⃣ ssh-keygen -R ile known_hosts'tan ana bilgisayar anahtarı silme

known_hosts'ta bağlandığınız sunucuların ana bilgisayar anahtarları satır satır birikir. Sunucu yeniden kurulup ana bilgisayar anahtarı değişirse ssh kayıtlı anahtarla uyuşmadığı için bağlantıyı reddeder; eski satırı silen seçenek -R'dir. Aşağıdaki known_hosts örnek adreslerle oluşturulmuş üç satırlık bir dosyadır ve -f ile belirtildi.

cat ~/.ssh/known_hosts
192.0.2.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk
server2.example.com,192.0.2.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
[192.0.2.30]:2222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC0WmcBD2HIsiSn+tERrbeFIyExAodSEUhE9j5WMpkRW

Her satırda sırasıyla ana bilgisayar adı veya adres, anahtar türü ve anahtar değeri bulunur. Virgülle birleştirilmiş ikinci satır aynı sunucunun adını ve adresini içerir; üçüncü satırdaki köşeli parantez ve iki nokta ise 22 dışında bir portu gösterir.

ssh-keygen -F 192.0.2.10 -f ~/.ssh/known_hosts
# Host 192.0.2.10 found: line 1
192.0.2.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk

-F, o ana bilgisayarın satırını kaçıncı satır olduğuyla birlikte yazdırır. Olmayan bir ana bilgisayarda hiçbir şey yazdırmadı ve çıkış kodu 1 ile bitti.

ssh-keygen -R 192.0.2.10 -f ~/.ssh/known_hosts
# Host 192.0.2.10 found: line 1
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.old
cat ~/.ssh/known_hosts
server2.example.com,192.0.2.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
[192.0.2.30]:2222 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC0WmcBD2HIsiSn+tERrbeFIyExAodSEUhE9j5WMpkRW

-R o ana bilgisayarın satırını siler ve özgün dosyayı known_hosts.old olarak bırakır. Silmeden sonra yalnızca iki satır kaldı.

ssh-keygen -R 192.0.2.99 -f ~/.ssh/known_hosts
Host 192.0.2.99 not found in /home/user/.ssh/known_hosts
ssh-keygen -R "[192.0.2.30]:2222" -f ~/.ssh/known_hosts
# Host [192.0.2.30]:2222 found: line 2
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.old

Olmayan bir ana bilgisayar verilince yalnızca tek satır not found çıktı. Portu farklı olan bir sunucuyu bulmak için known_hosts'ta yazdığı gibi köşeli parantez ve portu da yazmanız gerekir.

ssh-keygen -H -f ~/.ssh/known_hosts
WARNING: /home/user/.ssh/known_hosts.old contains unhashed entries
Delete this file to ensure privacy of hostnames
/home/user/.ssh/known_hosts updated.
Original contents retained as /home/user/.ssh/known_hosts.old
cat ~/.ssh/known_hosts
|1|JL/knNlx/BnCoOWp5rNeRo3r1rE=|OCPyeFd1rgG8P2QGzrju/V2Y8c4= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR
|1|AG9QJQvGaQmVsEusSdND1lM9cKI=|Ue0a9suJIzN0yxoJgV7ClLBgSYw= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR

-H ana bilgisayar adlarını ve adresleri karma hâline getirir. Dosya sızsa bile hangi sunuculara bağlandığınızın ortaya çıkmamasını sağlayan seçenektir; virgülle birleştirilmiş ad ve adres iki karma satıra ayrıldı. .old dosyasında karma öncesi içeriğin kaldığını söyleyen bir uyarı da çıktı.

ssh-keygen -F server2.example.com -f ~/.ssh/known_hosts
# Host server2.example.com found: line 1
|1|JL/knNlx/BnCoOWp5rNeRo3r1rE=|OCPyeFd1rgG8P2QGzrju/V2Y8c4= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3s6oYeTCz7KeYs0f/60/Ix0DhmK4hf1uHCC10TrXyR

Karma hâline getirilmiş dosyada da -F satırı adıyla buldu.

6️⃣ ssh-copy-id ile açık anahtar kaydı ve authorized_keys

Anahtarı oluştursanız bile sunucu o açık anahtarı tanımıyorsa bağlantı yine şifreyle yapılır. Açık anahtarı sunucuya tanıtan yer, bağlanacağınız hesabın ~/.ssh/authorized_keys dosyasıdır; bu dosyaya .pub satırını ekleyen komut ise ssh-copy-id'dir. Özel anahtar bilgisayarınızda kalır, yalnızca tek satırlık açık anahtar karşıya geçer. Aşağıdaki diyagramda adım düğmelerine basınca iki dosyanın nereye yerleştiği görünür.

🔐 ssh-keygen anahtar çiftinin bağlantıda kullanılma akışı
Açıklama diyagramı
🔍 Adımlar
$ ssh-keygen -t ed25519 -C user@example.comssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.0.2.10ssh -i ~/.ssh/id_ed25519 user@192.0.2.10
💻 Benim bilgisayarım ~/.ssh
🔒id_ed25519Özel anahtar · dışarı gönderilmez
🔑id_ed25519.pubTek satır açık anahtar · sunucuya kopyalanır
➜Henüz sunucuda yokTek satır açık anahtar kopyalandıSunucu açık anahtarla doğrular
🖥️ Sunucu ~/.ssh/authorized_keys
📄BoşYalnızca şifreyle giriş
🔑ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJVLiw04ugfXq15n2m8ZDW0OywkRoug8beXw/9VnVY/L user@example.comKayıtlı açık anahtar · yalnızca bu satırın eşi olan özel anahtar geçer
ssh-keygen özel ve açık anahtarı bir çift olarak oluşturur. Özel anahtar yalnızca bilgisayarınızdaki ~/.ssh içinde kalır, açık anahtar ise .pub dosyasındaki tek satırdır. Bu adımda sunucuda henüz hiçbir şey olmadığı için yalnızca şifreyle giriş yapılır.
ssh-copy-id tek satırlık açık anahtarı sunucudaki ~/.ssh/authorized_keys dosyasının sonuna ekler. Özel anahtar kopyalanmaz. Açık anahtarın gizli tutulması gerekmez, bu yüzden aynı satırı birden çok sunucuya ekleyebilirsiniz.
Bağlanırken sunucu, authorized_keys içindeki açık anahtarla özel anahtarınızın imzasını doğrular. Çift eşleşirse şifresiz giriş yapılır; özel anahtar dosyası olmayan bir bilgisayarda aynı hesap olsa bile şifre sorulur.
ssh-copy-id -n -i ~/.ssh/deploy_key.pub -o ConnectTimeout=3 user@192.0.2.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/deploy_key.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: ERROR: ssh: connect to host 192.0.2.10 port 22: Connection timed out

-n bir dry-run olduğundan sunucuya hiçbir şey yazmaz. Yine de ssh-copy-id önce o anahtarla giriş yapmayı deneyip kayıtlı anahtarları ayıklar; 192.0.2.10 belgeleme için ayrılmış bir adres olduğundan bağlantı kurulamadı ve timed out ile bitti. -o'dan sonraki seçenekler olduğu gibi ssh'a aktarılır.

ssh-copy-id -n -f -i ~/.ssh/deploy_key.pub -o ConnectTimeout=3 user@192.0.2.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/deploy_key.pub"
=-=-=-=-=-=-=-=
Would have added the following key(s):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk deploy@example.com
=-=-=-=-=-=-=-=

-f bu kontrolü atlayan zorlama modudur. -n ile birlikte verilince sunucuya girecek tek satırlık açık anahtar Would have added altında çıktı. Bu, .pub dosyasının içeriğiyle aynı satırdır.

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.0.2.10

Asıl kayıt, -n'yi çıkardığınız bu komutla yapılır. ssh-copy-id betiğine ve kılavuzuna göre bu komut o hesabın şifresini bir kez sorar, açık anahtarı sunucudaki ~/.ssh/authorized_keys dosyasının sonuna ekler ve ardından Number of key(s) added: 1 yazdırır. Dosya ve klasör yoksa oluşturur, aynı anahtar zaten varsa atlar.

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@192.0.2.10

Port 22 değilse -p ile verin.

ssh-copy-id olmayan ortamlarda tek satırlık açık anahtarı sunucudaki authorized_keys dosyasına kendiniz ekleyin. Sunucuya şifreyle giriş yaptıktan sonra aşağıdaki sırayla ilerleyin. Çıktı, aynı sunucu içinde .pub dosyası eklenerek kontrol edildi; başka bir sunucuda .pub dosyasındaki satırı kopyalayıp echo ile ekleyin.

mkdir -p ~/.ssh
chmod 700 ~/.ssh

.ssh klasörü yoksa oluşturun ve iznini 700 yapın.

cat ~/.ssh/deploy_key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKphFOc7oiKNpIHFTzK/ippCS5U5D+lF3xmXM6dmYjk deploy@example.com
ls -l ~/.ssh/authorized_keys
-rw------- 1 user user 100 Oct 29 08:22 /home/user/.ssh/authorized_keys

authorized_keys dosyasına tek satırlık açık anahtar girdi ve izni 600. sshd_config kılavuzunun StrictModes maddesinde, sshd'nin varsayılan ayarda önce kullanıcı dosyalarının izinlerini denetlediği ve herkesin yazabileceği bir izin varsa girişi kabul etmediği yazıyor.

ssh -i ~/.ssh/id_ed25519 user@192.0.2.10

Kayıt bittikten sonra özel anahtarla bağlanın. Anahtar adı id_ed25519 gibi varsayılan bir adsa ssh onu kendisi bulur; deploy_key gibi başka bir adsa dosyayı ssh -i seçeneği ile belirtin.

🔲 ssh-keygen komut simülatörü

Aşağıdaki simülatörde ssh-keygen ile anahtar oluşturmayı, parmak izi kontrolünü, parola değiştirmeyi, known_hosts temizliğini ve ssh-copy-id'yi kendiniz yazarak deneyebilirsiniz. Parmak izleri ve açık anahtarlar yazıdakiyle aynı örnek değerlerdir; ssh-copy-id ise sanal sunucuya kaydediyormuş gibi yapar.

ssh-keygen komut simülatörüOpenSSH 9.9p1 · user
[root@server work]#
Klavyedeki ↑↓ tuşlarıyla daha önce yazdığınız komutları geri çağırabilirsiniz.

🔢 SSS & önerilen içerikler

ssh-keygen'in varsayılanı ed25519'dur ve anahtarı kısadır: tek satırlık açık anahtar 98 bayttı. 4096 bitlik rsa açık anahtarı 742 bayttı; rsa, ed25519 kabul etmeyen eski sunuculara veya cihazlara bağlanırken kullanılır.

Evet. ssh kılavuzuna göre ssh yalnızca ~/.ssh/id_ed25519, ~/.ssh/id_rsa gibi varsayılan adları kendiliğinden arar; başka bir adı bağlanırken -i ile belirtin ya da ~/.ssh/config içindeki IdentityFile'a yazın.

sshd_config kılavuzuna göre PasswordAuthentication değerini no yapıp sshd'nin ayarları yeniden okumasını sağlayın. Anahtarla bağlanabildiğinizi önce başka bir terminalde doğruladıktan sonra kapatın. Doğrulamadan kapatırsanız ne şifreyle ne de anahtarla girebilir ve sunucunun dışında kalabilirsiniz.

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 10   +   8   =