Linux / Unix Komutu: sshd

isim

sshd - OpenSSH SSH sunucusu

özet

sshd [- deiqtD46 ] [- b bitleri ] [- f config_file ] [- g login_grace_time ] [- host_key_dosyası ] [- k key_gen_time ] [- o seçenek ] [- p port ] [- u len ]

Açıklama

sshd (SSH Daemon) ssh (1) için bir programdır . Bu programlar birlikte rlogin yerine ve rsh , ve güvensiz bir ağ üzerinden güvenilmeyen iki ana bilgisayar arasında güvenli şifreli iletişim sağlar . Programların kurulumu ve kullanımı mümkün olduğu kadar kolay olması amaçlanmıştır.

sshd , istemcilerden gelen bağlantıları dinleyen bir programdır . Normalde / etc / rc adresinden açılışta başlatılır. Her gelen bağlantı için yeni bir artalanı ister. Çatallı daemons anahtar değişimi, şifreleme, kimlik doğrulama, komut yürütme ve veri alışverişi. Sshd'nin bu uygulaması, aynı anda hem SSH protokolü sürüm 1 ve 2'yi destekler.

SSH Protokolü Sürümü 1

Her ana bilgisayar, ana bilgisayarı tanımlamak için kullanılan, ana bilgisayara özgü bir RSA anahtarına (normalde 1024 bit) sahiptir. Ayrıca, daemon başladığında, bir sunucu RSA anahtarı (normalde 768 bit) oluşturur. Bu anahtar normalde kullanıldığında her saatte yeniden oluşturulur ve asla diskte saklanmaz.

Bir istemci bağlandığında, sunucu, ana bilgisayar ve sunucu anahtarları ile yanıt verir. İstemci, değişmemiş olduğunu doğrulamak için RSA ana bilgisayar anahtarını kendi veritabanına karşı karşılaştırır. İstemci daha sonra bir 256 bit rasgele sayı üretir. Bu rasgele sayıyı hem ana bilgisayar anahtarını hem de sunucu anahtarını kullanarak şifreler ve şifrelenmiş sayıyı sunucuya gönderir. Her iki taraf da bu rastgele sayıyı, oturumdaki tüm diğer iletişimleri şifrelemek için kullanılan bir oturum anahtarı olarak kullanır. Seansın geri kalanı, varsayılan olarak kullanılan 3DES ile Blowfish veya 3DES adlı geleneksel bir şifre kullanılarak şifrelenir. İstemci, sunucu tarafından sunulanlardan kullanmak için şifreleme algoritmasını seçer.

Ardından, sunucu ve istemci bir kimlik doğrulama iletişim kutusu girer. İstemci, .Rhosts kimlik doğrulaması, RSA ana bilgisayar kimlik doğrulaması, RSA yanıt-yanıtı kimlik doğrulaması veya parola tabanlı kimlik doğrulaması ile birlikte .rhosts kimlik doğrulamasını kullanarak kendini doğrulamaya çalışır.

Rhosts kimlik doğrulaması normalde devre dışıdır, çünkü temelde güvensizdir, ancak istenirse sunucu yapılandırma dosyasında etkinleştirilebilir. Rshd rlogind ve rexecd devre dışı bırakılmadıkça sistem güvenliği geliştirilmez (bu nedenle rlogin ve rsh'i makineye tamamen devre dışı bırakır).

SSH Protokolü Sürüm 2

Sürüm 2 benzer şekilde çalışır: Her ana bilgisayar, ana bilgisayarı tanımlamak için kullanılan ana bilgisayara özgü bir anahtara (RSA veya DSA) sahiptir. Ancak, daemon başladığında, bir sunucu anahtarı oluşturmaz. İleri güvenlik, bir Diffie-Hellman anahtar anlaşması ile sağlanır. Bu önemli anlaşma, paylaşılan oturum anahtarı ile sonuçlanır.

Seansın geri kalanı simetrik şifreleme, şu anda 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES veya 256 bit AES kullanılarak şifrelenir. İstemci, sunucu tarafından sunulanlardan kullanmak için şifreleme algoritmasını seçer. Ayrıca, oturum bütünlüğü bir şifreleme ileti kimlik doğrulama kodu (hmac-sha1 veya hmac-md5) aracılığıyla sağlanır.

Protokol sürüm 2, bir ortak anahtar tabanlı kullanıcı (PubkeyAuthentication) veya istemci ana bilgisayar (HostbasedAuthentication) kimlik doğrulama yöntemi, geleneksel parola kimlik doğrulaması ve meydan okuma-yanıt tabanlı yöntemler sağlar.

Komut Yürütme ve Veri Yönlendirme

İstemci kendini başarıyla doğrularsa, oturumu hazırlamak için bir iletişim kutusu girilir. Bu sırada istemci, bir sahte, X11 bağlantılarını iletme, TCP / IP bağlantılarını iletme veya kimlik doğrulama aracı bağlantısını güvenli kanal üzerinden iletme gibi şeyler isteyebilir.

Son olarak, istemci ya bir kabuk isterse bir komutun yürütülmesini ister. Taraflar daha sonra oturum moduna girer. Bu modda, her iki taraf da herhangi bir zamanda veri gönderebilir ve bu veriler sunucu tarafındaki kabuk veya komuta ve istemci tarafındaki kullanıcı terminaline iletilir.

Kullanıcı programı sonlandırıldığında ve iletilen tüm X11 ve diğer bağlantılar kapatıldığında, sunucu komut çıkış durumunu istemciye gönderir ve her iki taraf da çıkar.

sshd komut satırı seçenekleri veya bir yapılandırma dosyası kullanılarak yapılandırılabilir. Komut satırı seçenekleri, yapılandırma dosyasında belirtilen değerleri geçersiz kılar.

sshd, bir başlatma sinyali aldığında konfigürasyon dosyasını yeniden başlatır, SIGHUP , başlatıldığı adla kendini çalıştırarak, örneğin, / usr / sbin / sshd

Seçenekler aşağıdaki gibidir:

-b bit

Geçici protokol sürüm 1 sunucu anahtarındaki bit sayısını belirtir (varsayılan 768).

-d

Hata ayıklama modu. Sunucu, sistem günlüğüne ayrıntılı hata ayıklama çıkışı gönderir ve kendini arka planda bırakmaz. Sunucu da çalışmaz ve sadece bir bağlantıyı işleyecektir. Bu seçenek sadece sunucu için hata ayıklaması içindir. Çoklu -d seçenekleri, hata ayıklama seviyesini artırır. Maksimum 3'tür.

-e

Bu seçenek belirtildiğinde, sshd çıkışı sistem günlüğü yerine standart hataya gönderir.

-f configuration_dosyası

Yapılandırma dosyasının adını belirtir. Varsayılan, / etc / ssh / sshd_config sshd , herhangi bir yapılandırma dosyası yoksa başlatmayı reddeder.

-g login_grace_time

İstemcilerin kendilerini doğrulamaları için gereken zamanı verir (varsayılan 120 saniye). İstemci, bu birkaç saniye içinde kullanıcının kimliğini doğrulayamazsa, sunucu bağlantıyı keser ve çıkar. Sıfır değeri sınırsızdır.

-h host_key_file

Bir ana bilgisayar anahtarının okunacağı bir dosyayı belirtir. Sshd root olarak çalıştırılmazsa bu seçenek verilmelidir (normal ana bilgisayar anahtar dosyaları normalde hiç kimsenin root tarafından okunamadığından). Protokol sürümü 1 için / etc / ssh / ssh_host_key ve protokol sürümü 2 için / etc / ssh / ssh_host_rsa_key ve / etc / ssh / ssh_host_dsa_key şeklindedir. Farklı protokol sürümleri ve anasistem anahtarı için birden çok ana makine anahtarı olması mümkündür. algoritmaları.

-ben

Sshd'nin inetd'den çalıştırıldığını belirtir. sshd normalde inetd'den çalıştırılamıyor çünkü istemciye yanıt vermeden önce sunucu anahtarını oluşturması gerekiyor ve bu on saniye sürebilir. Anahtar her defasında rejenere edildiyse müşteriler çok beklemek zorunda kalacaklardı. Bununla birlikte, küçük anahtar boyutları ile (örneğin, 512) inetd'den sshd kullanılması mümkün olabilir.

-k key_gen_time

Geçici protokol sürüm 1 sunucu anahtarının ne sıklıkta yeniden üretileceğini belirtir (varsayılan 3600 saniye veya bir saat). Anahtarın oldukça sık yenilenmesi için motivasyon anahtarı, anahtarın herhangi bir yerde saklanmaması ve yaklaşık bir saat sonra, makinenin çatlaksa veya fiziksel olarak ele geçirilse bile, yakalanan iletişimin şifresini çözmek için anahtarın geri kazanılması imkansız hale gelmektedir. Sıfır değeri, anahtarın hiçbir zaman yeniden oluşturulmayacağını belirtir.

-o seçeneği

Yapılandırma dosyasında kullanılan formatta seçenekler vermek için kullanılabilir. Bu, ayrı bir komut satırı bayrağı bulunmayan seçenekleri belirtmek için kullanışlıdır.

-p bağlantı noktası

Sunucunun bağlantıların dinleneceği bağlantı noktasını belirtir (varsayılan 22). Çoklu port seçeneklerine izin verilir. Bir komut satırı bağlantı noktası belirtildiğinde, yapılandırma dosyasında belirtilen bağlantı noktaları yoksayılır.

-q

Sessiz mod. Sistem günlüğüne hiçbir şey gönderilmez. Normalde her bağlantının başlangıcı, kimlik doğrulaması ve sonlandırılması günlüğe kaydedilir.

-t

Test modu. Sadece yapılandırma dosyasının geçerliliğini ve anahtarların aklı olup olmadığını kontrol edin. Bu, yapılandırma seçenekleri değişebileceğinden, sshd'yi güvenilir bir şekilde güncellemek için kullanışlıdır.

-en len

Bu seçenek uzak ana bilgisayar adını tutan utmp yapısında alanın boyutunu belirtmek için kullanılır. Çözümlenen ana makine adı uzunluktan daha uzunsa, bunun yerine noktalı ondalık değer kullanılır. Bu, ana makinenin benzersiz bir şekilde tanımlanabilmesi için bu alandan taşan çok uzun ana bilgisayar adlarına sahip olanlara izin verir. Belirtme - u0 , yalnızca noktalı ondalık adreslerin utmp dosyasına konması gerektiğini belirtir. - u0 ayrıca kimlik doğrulama mekanizması veya yapılandırması gerektirmedikçe sshd'nin DNS isteklerini yapmasını önlemek için kullanılır. DNS gerektirebilecek kimlik doğrulama mekanizmaları arasında RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication ve bir anahtar dosyasında bir from = pattern-list seçeneği kullanılır. DNS gerektiren yapılandırma seçenekleri arasında AllowUsers veya DenyUsers'da bir USER @ HOST düzeni kullanılması yer alır.

-D

Bu seçenek belirtildiğinde sshd ayrılmayacak ve bir daemon olmayacaktır. Bu sshd kolay izleme sağlar

-4

Sadece IPv4 adreslerini kullanmak için sshd'yi zorlar .

-6

Sadece IPv6 adreslerini kullanmak için sshd'yi zorlar .

Yapılandırma Dosyası

sshd , / etc / ssh / sshd_config dosyasından (veya komut satırında - f ile belirtilen dosyadan) yapılandırma verilerini okur. Dosya formatı ve konfigürasyon seçenekleri sshd_config5'te açıklanmıştır.

Giriş Süreci

Bir kullanıcı başarıyla giriş yaptığında, sshd şunları yapar:

  1. Giriş bir tty üzerindeyse ve herhangi bir komut belirtilmemişse, son giriş zamanını ve / etc / motd'yi yazdırır (yapılandırma dosyasında engellenmediği sürece veya $ HOME / .hushlogin ile Sx FILES bölümüne bakın).
  2. Giriş bir tty üzerinde ise, kayıt zamanını kaydeder.
  3. Varsa, kontroller / etc / nologin, içeriği ve çıkışları basar (root değilse).
  4. Normal kullanıcı ayrıcalıklarıyla çalıştırılacak değişiklikler.
  5. Temel ortamı kurar.
  6. Varsa, $ HOME / .ssh / environment okur ve kullanıcıların ortamını değiştirmelerine izin verilir. Sshd_config5'deki PermitUserEnvironment seçeneğine bakın.
  7. Kullanıcının ana dizindeki değişiklikler.
  8. $ HOME / .ssh / rc varsa, onu çalıştırır; else / etc / ssh / sshrc varsa, çalıştırır; aksi halde xauth çalışır. “Rc” dosyalarına standart girişte X11 kimlik doğrulama protokolü ve çerez verilir.
  9. Kullanıcının kabuğunu veya komutunu çalıştırır.

Authorized_Keys Dosya Biçimi

$ HOME / .ssh / authorized_keys, protokol sürüm 1'deki RSA kimlik doğrulaması için izin verilen ortak anahtarları ve protokol sürüm 2'deki ortak anahtar kimlik doğrulamasını (PubkeyAuthentication) listeleyen varsayılan dosyadır. AuthorizedKeysFile , alternatif bir dosya belirtmek için kullanılabilir.

Dosyanın her satırı bir anahtar içerir (boş satırlar ve `# ile başlayan satırlar yorum olarak dikkate alınmaz). Her bir RSA ortak anahtarı boşluklarla ayrılmış olan aşağıdaki alanları içerir: seçenekler, bitler, üs, modül, yorum. Her protokol sürüm 2 ortak anahtar oluşur: seçenekler, keytype, base64 kodlanmış anahtar, yorum. Seçenekler alanı isteğe bağlıdır; varlığı, satırın bir sayı ile başlayıp başlamamasıyla belirlenir (seçenekler alanı hiçbir zaman bir sayı ile başlamaz). Bit, üs, modül ve yorum alanları protokol 1 için RSA anahtarını verir; Yorum alanı hiçbir şey için kullanılmaz (ancak kullanıcının anahtarı tanımlaması uygun olabilir). Protokol sürümü 2 için, keytype `ssh-dss '' veya` `ssh-rsa '' dir.

Bu dosyadaki çizgilerin genellikle birkaç yüz bayt uzunluğunda olduğunu unutmayın (genel anahtar kodlamanın boyutu nedeniyle). Bunları yazmak istemezsiniz; bunun yerine, identity.pub id_dsa.pub dosyasını veya id_rsa.pub dosyasını kopyalayın ve düzenleyin.

sshd , protokol 1 için minimum RSA anahtar modülü boyutunu ve 768 bitlik protokol 2 anahtarını zorlar.

Seçenekler (mevcutsa) virgülle ayrılmış seçenek belirtimlerinden oluşur. Çift tırnak hariç, boşluk bırakılmamaktadır. Aşağıdaki seçenek belirtimleri desteklenmektedir (seçenek anahtar kelimelerinin büyük / küçük harfe duyarlı olmadığını unutmayın):

den = desen-listesi

Ortak anahtar kimlik doğrulamasına ek olarak, uzak ana bilgisayarın kurallı adının virgülle ayrılmış desenler listesinde bulunması gerektiğini belirtir (`* 've`?' Joker karakter olarak kullanılır). Liste ayrıca önekleri tarafından '!' ; Kanonik ana bilgisayar adı olumsuzlanmış bir desenle eşleşirse, anahtar kabul edilmez. Bu seçeneğin amacı isteğe bağlı olarak güvenliği arttırmaktır: Genel anahtar kimlik doğrulaması kendi başına ağa veya ad sunucularına veya herhangi bir şeye (ancak anahtara) güvenmez; Ancak, eğer birisi bir şekilde anahtarı çalarsa, bu anahtar, dünyanın herhangi bir yerinden giriş yapmasına izin verir. Bu ek seçenek, çalınmış bir anahtarı kullanmayı daha da zorlaştırır (ad sunucularına ve / veya yönlendiricilere yalnızca anahtarın yanı sıra tehlikeye atılmalıdır).

Komut = Komut

Bu anahtarın kimlik doğrulama için kullanıldığında komutun yürütüleceğini belirtir. Kullanıcı tarafından sağlanan komut (varsa) dikkate alınmaz. İstemci bir pty isterse komut bir pty üzerinde çalıştırılır; aksi halde tty olmadan çalıştırılır. 8 bitlik temiz bir kanal gerekiyorsa, bir pty istememeli veya no-pty belirtmemelidir. Bir alıntı, bir ters eğik çizgi ile alıntı yaparak komutta yer alabilir. Bu seçenek, belirli genel anahtarların belirli bir işlemi gerçekleştirmesini kısıtlamak için yararlı olabilir. Bir örnek uzaktan yedeklemeye izin veren bir anahtar olabilir, ancak başka bir şey olmayabilir. İstemcinin açıkça yasaklanmadıkça TCP / IP ve / veya X11 iletimi belirtebileceğini unutmayın. Bu seçeneğin kabuk, komut veya alt sistem yürütmesi için geçerli olduğunu unutmayın.

Çevre = İSİM = değer

Bu anahtarı kullanarak giriş yaparken dizenin çevreye ekleneceğini belirtir. Ortam değişkenleri bu şekilde diğer varsayılan ortam değerlerini geçersiz kılar. Bu türden çoklu seçeneklere izin verilir. Çevre işleme varsayılan olarak devre dışıdır ve PermitUserEnvironment seçeneği ile kontrol edilir. UseLogin etkinleştirildiğinde bu seçenek otomatik olarak devre dışı bırakılır.

no-port yönlendirme

Bu anahtar kimlik doğrulama için kullanıldığında TCP / IP iletimini yasaklar. İstemci tarafından herhangi bir port iletme talebi bir hata döndürecektir. Bu, örneğin, komut seçeneğiyle bağlantılı olarak kullanılabilir.

no-X11-yönlendirme

Kimlik doğrulama için bu anahtar kullanıldığında X11 iletimini yasaklar. İstemci tarafından yapılan X11 iletme istekleri bir hata döndürecektir.

herhangi bir-madde-yönlendirme

Kimlik doğrulama için bu anahtar kullanıldığında kimlik doğrulama aracısı iletmeyi yasaklar.

no-Pty

Tty tahsisini önler (pty tahsis etme talebi başarısız olur).

permitopen = makine: port

Yerel `` ssh -L '' bağlantı noktasını, yalnızca belirtilen ana makine ve bağlantı noktasına bağlanacak şekilde sınırlandırın. IPv6 adresleri alternatif bir sözdizimi ile belirtilebilir: ana makine / bağlantı noktası Birden çok permitopen seçeneği virgülle ayrılabilir. Belirtilen ana makine adlarında hiçbir desen eşleşmesi gerçekleştirilmez, bunlar tam alan adları veya adresleri olmalıdır.

Örnekler

1024 33 12121 ... 312314325 ylo@foo.bar

= "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

komut = "döküm / ev", no-pty, bağlantı noktası iletme 1024 33 23 ... 2323 backup.hut.fi

permitopen = "10.2.1.55:80", permitopen = "10.2.1.56:25" 1024 33 23 ... 2323

Ssh_Known_Hosts Dosya Biçimi

/ Etc / ssh / ssh_known_hosts ve $ HOME / .ssh / known_hosts dosyaları, bilinen tüm ana bilgisayarlar için ana bilgisayar ortak anahtarlarını içerir. Genel dosya yönetici tarafından (isteğe bağlı) hazırlanmalı ve kullanıcı başına dosya otomatik olarak korunmalıdır: kullanıcı bilinmeyen bir ana bilgisayardan bağlandığında, kullanıcı başına dosyaya anahtarı eklenir.

Bu dosyalardaki her satır aşağıdaki alanları içerir: hostnames, bit, üs, modül, yorum. Alanlar boşluklarla ayrılır.

Ana makine adları virgülle ayrılmış bir kalıp listesidir ('*' ve '?' Joker karakterler olarak davranır); her model, sırayla, kanonik ana bilgisayar ismine (bir istemciyi doğrularken) veya kullanıcı tarafından sağlanan adama (bir sunucunun doğrulanması sırasında) karşı eşleştirilir. Bir desen de "!" Ile önlenebilir olumsuzluğu belirtmek için: ana bilgisayar adı olumsuzlanmış bir desenle eşleşiyorsa, hatta başka bir desenle eşleşse bile kabul edilmez (bu satırla).

Bit, üs ve modül, doğrudan RSA ana bilgisayar anahtarından alınır; örneğin, /etc/ssh/ssh_host_key.pub adresinden elde edilebilirler. İsteğe bağlı yorum alanı, satırın sonuna kadar devam eder ve kullanılmaz.

`# 'Ile başlayan satırlar ve boş satırlar yorum olarak dikkate alınmaz.

Ana makine kimlik doğrulaması gerçekleştirilirken, eşleşen herhangi bir satırın uygun anahtarı varsa kimlik doğrulaması kabul edilir. Bu nedenle, aynı isimler için birkaç satır veya farklı ana bilgisayar anahtarlarına sahip olmak (ancak önerilmez) izin verilir. Bu, kaçınılmaz olarak farklı etki alanlarından ana bilgisayar adlarının kısa biçimleri dosyaya koyulduğunda gerçekleşecektir. Dosyaların çakışan bilgiler içermesi mümkündür; geçerli bilgiler her iki dosyadan da bulunabilirse kimlik doğrulaması kabul edilir.

Bu dosyalardaki satırların genellikle yüzlerce karakter uzunluğunda olduğunu ve ana bilgisayar tuşlarını el ile yazmak istemediğinizi unutmayın. Daha ziyade, bir betikle veya /etc/ssh/ssh_host_key.pub alarak ve ön taraftaki ana bilgisayar adlarını ekleyerek bunları üretin.

Örnekler

closenet, ..., 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ..... =

Ayrıca bakınız

scp (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, moduli (5), sshd_config5, sftp sunucusu8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "SSH Protokolü Mimarisi" taslak-ietf-secsh-mimari-12.txt Ocak 2002 çalışmaları devam ediyor

M. Friedl N. Provos WA Simpson "SSH Nakil Katmanı Protokolü için Diffie-Hellman Group Borsası" taslak-ietf-secsh-dh-group-exchange-02.txt Ocak 2002 çalışma materyali devam ediyor

Önemli: Komutunuzun belirli bir bilgisayarda nasıl kullanıldığını görmek için man komutunu ( % adam ) kullanın.