Özet
ssh-keyscan [-46cDHqv] [-f dosya] [-O seçenek] [-p port] [-T zaman_aşımı] [-t tür]
[makine | adres_listesi isim_listesi]
Açıklama
ssh-keyscan, bir dizi makinenin genel (public) SSH ana bilgisayar (host) anahtarlarını toplamak için kullanılan bir yardımcı programdır. sshd(8) belgesinde biçimi açıklanan ssh_known_hosts dosyalarının oluşturulmasına ve doğrulanmasına yardımcı olmak amacıyla tasarlanmıştır. ssh-keyscan, kabuk (shell) ve perl betikleri tarafından kullanılmaya uygun minimal bir arayüz sağlar.
ssh-keyscan, paralel olarak mümkün olduğunca çok sayıda makineyle bağlantı kurmak için engelleyici olmayan (non-blocking) soket G/Ç (I/O) işlemlerini kullanır, bu nedenle oldukça verimlidir. 1.000 makineden oluşan bir alan adındaki (domain) anahtarlar, bu makinelerin bazıları kapalı olsa veya sshd(8) çalıştırmıyor olsa bile onlarca saniye içinde toplanabilir. Tarama yapmak için taranan makinelere oturum açma (login) erişimine sahip olunması gerekmez ve tarama işlemi herhangi bir şifreleme içermez.
Taranacak makineler; ana bilgisayar adı (hostname), adres veya CIDR ağ aralığı (örneğin 192.168.16/28) ile belirtilebilir. Bir ağ aralığı belirtilirse, o aralıktaki tüm adresler taranacaktır.
Seçenekler aşağıdaki gibidir:
-4: ssh-keyscan aracını yalnızca IPv4 adreslerini kullanmaya zorlar.-6: ssh-keyscan aracını yalnızca IPv6 adreslerini kullanmaya zorlar.-c: Hedef makinelerden düz anahtarlar yerine sertifikalar talep eder.-D: Bulunan anahtarları SSHFP DNS kayıtları olarak yazdırır. Varsayılan davranış, anahtarlarıssh(1)known_hostsdosyası olarak kullanılabilecek bir biçimde yazdırmaktır.
-f dosya Makineleri veya “adres_listesi ad_listesi” çiftlerini her satırda bir tane olacak şekilde dosyadan okur. Dosya adı yerine ‘-’ belirtilirse, ssh-keyscan standart girdiden (standard input) okuma yapar. Bir dosyadan okunan adlar, taranacak bir adres, ana bilgisayar adı veya CIDR ağ aralığı ile başlamalıdır. Adreslerin ve ana bilgisayar adlarının arkasına isteğe bağlı olarak, çıktıya kopyalanacak virgülle ayrılmış ad veya adres takma adları (alias) eklenebilir. Örneğin:
192.168.11.0/24 10.20.1.1 happy.example.org 10.0.0.1,sad.example.org
-H: Çıktıdaki tüm ana bilgisayar adlarını ve adreslerini karmaşıklaştırır (hash). Karma oluşturulmuş adlarssh(1)vesshd(8)tarafından normal bir şekilde kullanılabilir, ancak dosya içeriğinin ifşa olması durumunda kimlik belirleyici bilgileri açığa çıkarmaz.
-O seçenek Bir anahtar/değer (key/value) seçeneği belirtir. Şu anda yalnızca tek bir seçenek desteklenmektedir:
hashalg=algoritma -D bayrağı kullanılarak SSHFP kayıtları yazdırılırken kullanılacak bir karma (hash) algoritması seçer. Geçerli algoritmalar “sha1” ve “sha256”dır. Varsayılan davranış her ikisini de yazdırmaktır.
-p port Uzak makinedeki belirtilen porta bağlanır.
-q: Sessiz mod: Yorum satırlarında sunucu ana bilgisayar adını ve banner'ları yazdırmaz.
-T zaman_aşımı Bağlantı girişimleri için zaman aşımını ayarlar. Bir makineye bağlantı başlatıldıktan veya o makineden en son veri okunduktan sonra zaman_aşımı saniye geçmişse, bağlantı kapatılır ve söz konusu makine kullanılamaz olarak kabul edilir. Varsayılan değer 5 saniyedir.
-t tür Taranan makinelerden alınacak anahtarın türünü belirtir. Olası değerler: “ecdsa”, “ed25519”, “ecdsa-sk”, “ed25519-sk” veya “rsa”. Birden fazla değer, aralarına virgül konularak belirtilebilir. Varsayılan davranış, yukarıdaki tüm anahtar türlerini almaktır.
-v: Ayrıntılı mod: İlerleme hakkında hata ayıklama (debugging) mesajları yazdırır.
Eğer bir ssh_known_hosts dosyası, anahtarlar doğrulanmadan ssh-keyscan kullanılarak oluşturulursa, kullanıcılar aradaki adam (man-in-the-middle) saldırılarına karşı savunmasız kalacaktır. Diğer taraftan, güvenlik modeli böyle bir riske izin veriyorsa, ssh-keyscan, tahrif edilmiş anahtar dosyalarının veya ssh_known_hosts dosyası oluşturulduktan sonra başlayan aradaki adam saldırılarının tespit edilmesine yardımcı olabilir.
Dosyalar
/etc/ssh/ssh_known_hosts
Örnekler
"hostname" adlı makinenin RSA ana bilgisayar anahtarını yazdırın:
$ ssh-keyscan -t rsa hostname
Bir ağ aralığını tarayarak desteklenen tüm anahtar türlerini yazdırın:
$ ssh-keyscan 192.168.0.64/25
ssh_hosts dosyasındaki makinelerden, sıralanmış ssh_known_hosts dosyasındakilerden yeni veya
farklı anahtarlara sahip olan tüm makineleri bulun:
$ ssh-keyscan -t rsa,ecdsa,ed25519 -f ssh_hosts | \
sort -u - ssh_known_hosts | diff ssh_known_hosts -
Ayrıca Bakınız
ssh(1), sshd(8)
Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints, RFC 4255, 2006.
Yazarlar
İlk sürümü David Mazieres dm@lcs.mit.edu yazdı ve Wayne Davison wayned@users.sourceforge.net protokol sürümü 2 için destek ekledi.