Windows 10’a Dahili OpenSSH Sunucu Nasıl Kurulur?

Windows 10’da isteğe bağlı olarak kurulabilen özellikler listesinde OpenSSH istemcisinin ve OpenSSH sunucusunun beta sürümleri bulunmaktadır. Dahili SSH istemcisi, herhangi bir üçüncü yazılım yüklemeden doğrudan Windows komut satırından uzak SSH sunucularına bağlanmanıza izin verir. Sunucu ise kullanıcıların uzaktan Windows 10’a bağlanmasına ve SSH üzerinden komut istemi almasına izin verir.

Uzaktan Windows 10 bilgisayarlarının konsoluna erişmek isteyenler için, dahili Windows 10 OpenSSH sunucusu sizin aradığınız özellik olabilir. Daha da iyisi, OpenSSH’yi Linux’ta kullanmalarını bilenler için Windows 10 sürümü hemen hemen benzer şekilde çalışmaktadır.

Daha önceki makalemdeki Windows 10 OpenSSH istemcisi kurulumu ve kullanımı çok kolaydı. Fakat OpenSSH sunucusunun nasıl çalıştıracağımı bulmak ve bu dokümanı hazırlamak gerçek bir acıydı, çünkü belgelerde izinlerle ilgili değişiklikler yapmak zorundaydım ve anahtar üretimi beklendiği gibi çalışmıyordu. Artık hepsi çözülmüş olduğuna göre, Sizin sadece bu talimatları izleyerek Windows 10’da üzerinde çalışan sahili bir OpenSSH Sunucu uygulaması yükleyebilmeniz için 15 dakikanızı  ayırmanız yeterli.

Windows 10 OpenSSH Sunucusu Kurma

Öncelikle, Windows Başlat Menüsünü (pencere simgesini tıklayınız) ve daha sonra arama alanına option seçeneğini yazınız. Ekranınızda Manage optional features işaretli bir arama sonucu görüntülenecek, bunu tıklayınız. Manage optional features ekranını aşağıda gösterildiği gibi açılacaktır.

Manage Optional Features ekranı

Bu ekranda, o anda sisteminizde yüklü olan isteğe bağlı Windows özellikleri gösterilmektedir. Şimdi, yukarıdaki kırmızı okla gösterildiği gibi Add a feature düğmesine tıklayın. Bu, size isteğe bağlı kurulabilen özelliklerin bir listesini açacaktır. Çoğu, yazı tipi paketleri olmakla birlikte, sayfa çubuğunu aşağı kaydırırsanız, OpenSSH Client (Beta) ve OpenSSH Server’ı (Beta) göreceksiniz.

OpenSSH Sunucu Özelliklerini Yükleme

SSH sunucusunu yüklemek için OpenSSH Server (Beta)’yı seçin ve Install düğmesine tıklayın. Install düğmesini tıkladığınızda, bu özelliğin listeden kaybolduğunu göreceksiniz. Endişe etmenize gerek yok bu normal bir durum. Pencerenin sol üst kısmındaki geri oku tıkladığınızda yüklü özellikler listesine geri döneceksiniz.

Şimdi, OpenSSH Server’ın kurulu olduğunu göreceksiniz.

Windows 10 OpenSSH Sunucusu Kuruldu

Artık bu pencereyi kapatabilirsiniz.

Kurulum sonrasında, sshd ve sshd-agent adında iki yeni Windows hizmeti oluşturulacak ve ilişkili dosyalar C:\Windows\System32\OpenSSH klasöründe saklanacaktır. Yüklü dosyaların listesi aşağıdaki yer almaktadır:

C:\Windows\System32\OpenSSH\scp.exe
C:\Windows\System32\OpenSSH\sftp-server.exe
C:\Windows\System32\OpenSSH\sftp.exe
C:\Windows\System32\OpenSSH\ssh-add.exe
C:\Windows\System32\OpenSSH\ssh-agent.exe
C:\Windows\System32\OpenSSH\ssh-keygen.exe
C:\Windows\System32\OpenSSH\ssh-shellhost.exe
C:\Windows\System32\OpenSSH\ssh.exe
C:\Windows\System32\OpenSSH\sshd.exe
C:\Windows\System32\OpenSSH\sshd_config
C:\Windows\System32\OpenSSH\Logs\
C:\Windows\System32\OpenSSH\Logs\ssh-agent.log
C:\Windows\System32\OpenSSH\Logs\sshd.log

Yüklemeyi bitirmek için bilgisayarınızı şimdi yeniden başlatmanız gerekmektedir.

Sunucu üzerinden yeniden oturum açtıktan sonra, sshd hizmeti başlatılamayacatır. Eğer yeniden başlatmaya çalışırsanız Windows, hizmetin başlatılması için gerekli ayrıcalıklara sahip olmadığınızı bildirecektir.

Servisin ihtiyaç duyduğu eksik ayrıcalığı düzelmek için, Process Level Token‘ı değiştirmeli ve onu NT Service\sshd hesabına eklemek zorundayız. Bunu yapmak için Başlat Menüsünde secpol kelimesini arayınız ve görünen sonuçlarda Local Security Policy‘yi seçin.

Local Security Policy Editor açıldığında, Local Policies‘yi genişletip User Rights Assignment‘a tıklayın. User Rights Assignment’ı seçtikten sonra, sağ bölmede çeşitli ayrıcalıklar göreceksiniz. Replace a process level token ayrıcalığını değiştirmeyi görene kadar sayfayı aşağı kaydırın ve bulunca üzerine çift tıklayın. Bu size ayrıcalıklar ve atanan hesapların veya grupların özelliklerini gösteren bir pencere açacak.

Replace a process level token Permission Properties

Şimdi Add User or Group düğmesine tıklayın ve aşağıda gösterildiği Enter the object names to select alanına NT Service\sshd komutunu girin.

İşiniz bittiğinde, bu ayrıcalığı sshd’ye vermek için OK düğmesini tıklayın. Daha sonra özellikleri kapatmak için OK düğmesine basabilir ve ardından Local Security Policy düzenleyicisini kapatabilirsiniz.

Ayrıcalık etkin olsa bile, Windows sshd hizmetini başlatmayı denediğinizde “Windows could not start the sshd service on Local Computer. Error 1067: The Process terminated unexpectedly.” hatası görüntülenecektir.

SSHD servisini başlatmaya çalıştığınızdaki Error 1067

Eğer C:\Windows\System32\OpenSSH\Logs\sshd.log dosyasına bakarsanız, aşağıdaki gibi hatalar olduğunu göreceksiniz.

5272 11:06:28:910 error: Could not load host key: ./ssh_host_rsa_key
5272 11:06:28:910 error: Could not load host key: ./ssh_host_dsa_key
5272 11:06:28:910 error: Could not load host key: ./ssh_host_ed25519_key
5272 11:06:28:910 sshd: no hostkeys available -- exiting.

Sunucu ve istemci arasındaki trafiği şifrelemek için kullanılacak ana anahtarları oluşturmadığınızdan, SSHD bu hataları görüntülemektedir.

Bu anahtarları oluşturmak için, ayrıcalıklı bir komut satırından (Komut istemiciyi Administrator olarak çalıştırarak) C:\Windows\System32\OpenSSH\ssh-keygen.exe -A komutunu çalıştırmamız gerekir. Böylece anahtarlar C:\Windows\System32\OpenSSH klasöründe oluşturulur.

“Ssh-keygen -A” komutu; varsayılan anahtar dosyası yolu, boş bir parola, anahtar türü için varsayılan bitler ve varsayılan açıklama kullanılarak bir anahtar oluşturur. Normalde, anahtara bir parola eklemek istiyordum, ancak OpenSSH’nin şu anki Windows 10 (Beta) sürümünde ssh-keygen’e bir parola eklemeye çalıştığımda “failed: invalid argument” hatasıyla yanıt veriyor. Microsoft sonraki sürüm güncellemelerinde bu sorunu düzeltecektir.

C:\Windows\System32\OpenSSH\ssh-keygen.exe -A komutunu çalıştırdığınızda, C:\Windows\System32\OpenSSH klasöründe ssh_host_ed25519_key adlı özel bir anahtar ve ssh_host_ed25519_key.pub adlı bir ortak anahtar üretir.

ssh-keygen.exe’yi çalıştırmak

ssh-keygen anahtarınızı oluşturulup ve kaydettiğinizde, yukarıda gösterildiği gibi otomatik olarak komut satırından geri döneceksiniz. Ayrıcalıklı komut satırından çıkmak için exit yazıp enter tuşuna basabilirsiniz.

Çalışmalarınız henüz bitmedi. sshd hizmetini başlatmaya çalışırsanız, Windows yine “Hata 1067” ile yanıt dönecektir. Bunun nedeni, NT Service\sshd hesabının C:\Windows\system32\OpenSSH\ssh_host_ed25519_key dosyasına erişiminin bulunmamasıdır. Bunu düzeltmek için ssh_host_ed25519_key dosyasının özelliklerine gidin ve aşağıdaki değişiklikleri yapın:

  • Dosyanın sahibini NT Service\sshd olarak değiştirin.
  • NT Service\sshd’ye bu dosyayı yalnızca okumasına izin verin.
  • Tüm kullanıcıların izinlerini bu dosyadan kaldırın. Örneğin, oturum açmış hesabınızın izinleri de olacak ve bu izinleri de kaldırılmalısınız.

İşiniz bittiğinde ssh_host_ed25519_key dosyası üzerindeki izinleriniz şöyle olmalıdır:

İyi düzenlenmiş izinler

Eğer izinleri doğru bir şekilde ayarlamazsanız, sshd hizmetini başlatamazsınız ve günlük dosyası aşağıdaki hataları gösterecektir:

12988 11:33:58:886 error: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
12988 11:33:58:886 error: @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
12988 11:33:58:886 error: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
12988 11:33:58:886 error: Permissions for './ssh_host_ed25519_key' are too open.
12988 11:33:58:886 error: It is required that your private key files are NOT accessible by others.
12988 11:33:58:886 error: This private key will be ignored.
12988 11:33:58:886 error: key_load_private: bad permissions
12988 11:33:58:886 error: Could not load host key: ./ssh_host_ed25519_key
12988 11:33:58:886 sshd: no hostkeys available -- exiting.

Özel anahtar dosyasında uygun izinler ayarlandığında, sshd hizmetini tekrar başlatabilirsiniz. Şimdi, sshd servisi başlatabilir ve bilgisayarların uzaktan bağlanabilmesi sağlayabilirsiniz.

SSHD Hizmeti Başladı

Hizmet çalışmaya başladığından, SSH üzerinden Windows 10 kutunuza uzaktan bağlanabilirsiniz. Aşağıda, bir Windows 10 bilgisayarına SSH ile bağlandığında neye benzediğinin bir örneği verilmiştir. PowerShell de dahil olmak üzere tüm komut satırı araçlarını çalıştırabileceğiniz tam komut istemcisini aldığınıza dikkat ediniz.

SSH üzerinden Windows 10 Komut İstemi

sshd hizmeti otomatik (Gecikmeli Başlatmalı) seçeneklidir, yani Windows’un bu hizmeti, otomatik olarak ayarlanmış olan diğer tüm hizmetlerin başlatılmasından sonra başlatacağı anlamına gelir. Bu nedenle, bir bilgisayarı yeniden başlattıktan sonra, OpenSSH Sunucusunun çalışmaya başlaması birkaç dakika sürebilir.

Windows 10 üzerinde çalışan bir OpenSSH Sunucusu ile bir bilgisayarı nasıl yönetebileceğinizle ilgili olarak ek bir esneklik katmanı eklediniz. OpenSSH Sunucusu’nu etkinleştirmeye karar verirseniz, sshd’nin dinlediği port 22’ye yalnızca güvenilir IP adresleri tarafından erişilebildiğinden emin olun.