23 Mayıs 2020 Cumartesi

ssh-keygen komutu - Public/Private Key Pair Üretir

Giriş
openssh komutlarından bir tanesi. Uzaktaki sunucuya birisinin şifresiz olarak ssh ile bağlanabilmesi için bu komutun çalıştırılması gerekir. Üretilen key pair, passphrase ile korunabilir.

Üretilen Dosyalar
Bu komutu çalıştırınca iki tane dosya üretilir. Üretilen dosyalar normalde "~/.ssh" dizinindedir. Yani home dizinimdedir.

1. id_rsa - private key
2. id_rsa.pub - public key. Pub uzantısının açıklaması şöyle
...asks for a file in which to store the private key. The public key is stored in a file with the same name but ''.pub'' appended.
Açıklaması şöyle.
The utility will prompt you to select a location for the keys that will be generated. By default, the keys will be stored in the ~/.ssh directory within your user's home directory. The private key will be called id_rsa and the associated public key will be called id_rsa.pub.
Başka Makineye Kopyalama
Not : Karşı makineye public key kopyalanır.
1. ssh-copy-id komutu kullanılır. Önce kendi makinemde anahtar dosyalarını üretmek için şöyle yaparız
ssh-keygen -t rsa -b 4096 -C "comment"
Daha sonra karşı makineye kopyalamak için şöyle yaparız
ssh-copy-id user@ip
2. ssh ile kopyalanır. Şöyle yaparız.
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >>
  ~/.ssh/authorized_keys"
3. ~/.ssh/authorized_keys dosyasını açar ve kopyala yapıştır ile id_rsa.pub dosyasının içini ekleriz.

Dosya Formatı
Bu dosyalar openssl'in kendi formatındadır. PEM formatında değildir. id_rsa.pub dosyasının içi şuna benzer.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test
Örnek
Şöyle yaparız.
not-marco@rinzwind-desktop:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa): 
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo.        |
|*B.+ . .         |
|*=o .   o .      |
| = .     =       |
|. o     S        |
|E.               |
| o               |
|  .              |
|                 |
+-----------------+
Örnek
Eğer dosya ismi vermek istersek şöyle yaparız. Normalde dosya ismi vermesek daha iyi.
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
~/.ssh Dizini
Eğer Linux'u baştan kuracaksak bu dizinin yedeğini almak gerekir. Açıklaması şöyle
For outgoing SSH connections, backing up your key pair is enough. For convenience, you might just backup your ~/.ssh directory and restore it onto the new installation.
Bu dizinin Windows'taki karşılığı C:\Users\acelya\.ssh

-A seçeneği 
Örnek
Şöyle yaparız
ssh-keygen -A
-b seçeneği 
bit size anlamına gelir.
Örnek
Şöyle yaparız
ssh-keygen -b 4096

-C seçeneği 
Comment anlamına gelir.
Örnek
Şöyle yaparız
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f $PWD/id_rsa
-e seçeneği
Public key dosyasını okur ve RFC 4716 SSH Public Key File Formatında stdout'a gönderir.
Şöyle yaparız.
ssh-keygen -e -f openssh_key.pub
-f seçeneği
Çıktı olarak kullanılacak dosya ismini belirtir. Public key bu dosya ismine bir uzantı daha eklenerek oluşturulur. Eğer RSA kullanıyorsak .pub eklenir. 
Örnek
Şöyle yaparız
ssh-keygen -e -f key -m PEM > key.pem
Örnek
Şöyle yaparız
ssh-keygen -t rsa -N “” -f /home/ubuntu/.ssh/id_rsa
-l seçeneği
fingerprint değerini gösterir. Açıklaması şöyle.
ssh-keygen -l followed by inputting the correct private key's filename will output that key's fingerprint.
Örnek
Şöyle yaparız.
pi@raspberrypi:~$ ssh-keygen -l
Enter file in which the key is (/root/.ssh/id_rsa): /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:0xg...[redacted]...rduY. root@pi (ECDSA)
Örnek
Şöyle yaparız.
ssh-keygen -l -f .ssh/id_rsa
-N seçeneği
new passphrase anlamına gelir.
Örnek
Şöyle yaparız
ssh-keygen -t rsa -N “” -f /home/ubuntu/.ssh/id_rsa
-R seçeneği
Açıklaması şöyle. ~/.ssh/known_hosts Dosyası yazısına bakabilirsiniz.
Removes all keys belonging to hostname from a known_hosts file.
Örnek
Şöyle yaparız
ssh-keygen -f "$HOME/.ssh/known_hosts" -R 127.0.0.1
Örnek
Şöyle yaparız
$ ssh-keygen -R somehost
# Host somehost found: line 1
/Users/me/.ssh/known_hosts updated.
Original contents retained as /Users/me/.ssh/known_hosts.old
-t  seçeneği
Kullanılacak şifreleme algoritmasını belirtir.
Örnek
Şöyle yaparız.
ssh-keygen -t rsa
Örnek
Şöyle yaparız
ssh-keygen -t dsa
-y seçeneği
private key dosyasını kullanarak tekrar public key dosyasını üretir.
Örnek
Şöyle yaparız
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Örnek
Şöyle yaparız
ssh-keygen -y -f path/to/private/key
-Y seçeneği
Belirtilen dosyayı belirtilen public key dosyasını kullanarak imzalar.
Örnek
Şöyle yaparız
ssh-keygen -Y sign -n file -f $HOME/.ssh/id_rsa.pub <FILE-TO-SIGN>
Açıklaması şöyle
This signs the file specified in <FILE-TO-SIGN> using your SSH public key at the standard location $HOME/.ssh/id_rsa.pub . The signature ends up at <FILE-TO-SIGN>.sig by default,
Doğrulamak için "thesigner" isimli bir dosya gerekir. Bu dosyayı yaratmak şöyle yaparız
echo "thesigner $(cat id_rsa.pub)" > allowed_signers
Daha sonra şöyle yaparız
cat <FILE-TO-VERIFY> | ssh-keygen -Y verify -n file -f allowed_signers -s <SIGNATURE>
-I thesigner

Hiç yorum yok:

Yorum Gönder