Başarısız olan, hata veren veya reddedilen Azure Linux VM'sine yönelik SSH bağlantılarıyla ilgili sorunları giderme

Bu makale, Bir Linux sanal makinesine (VM) bağlanmaya çalıştığınızda Secure Shell (SSH) hataları, SSH bağlantı hataları veya SSH reddedildi nedeniyle oluşan sorunları bulmanıza ve düzeltmenize yardımcı olur. Bağlantı sorunlarını gidermek ve çözmek için Linux için Azure portal, Azure CLI veya VM Erişim Uzantısı'nı kullanabilirsiniz.

Not

Bu makale yardımcı oldu mu? Girdileriniz bizim için önemlidir. Bu makalenin sizin için ne kadar iyi çalıştığını veya nasıl geliştirebileceğimizi bize bildirmek için lütfen bu sayfadaki Geri Bildirim düğmesini kullanın.

Hızlı sorun giderme adımları

Her sorun giderme adımından sonra VM'ye yeniden bağlanmayı deneyin.

  1. SSH yapılandırmasını sıfırlayın.
  2. Kullanıcının kimlik bilgilerini sıfırlayın.
  3. Ağ güvenlik grubu kurallarının SSH trafiğine ve rol atamaya izin ettiğini doğrulayın.
    • SSH trafiğine izin vermek için bir Ağ Güvenlik Grubu kuralının mevcut olduğundan emin olun (varsayılan olarak, TCP bağlantı noktası 22).
    • Azure yük dengeleyici kullanmadan bağlantı noktası yeniden yönlendirmesini /eşlemesini kullanamazsınız.
    • SSH oturum açma bilgilerini yönetmek için Microsoft Entra ID kullanıyorsanız, kullanıcıya VM'yi ve ilişkili kaynaklarını içeren kaynak grubunda Sanal Makine Yöneticisi Oturum Açma veya Sanal Makine Kullanıcı Oturumu rolü atanmalıdır. Aksi takdirde, "İzin reddedildi (publickey)" hatası alınır. Daha fazla bilgi için bkz. Microsoft Entra oturum açma kullanan VM için rol atamalarını yapılandırma.
  4. VM kaynak durumunu denetleyin.
  5. VM'yi yeniden başlatın.
  6. VM'yi yeniden dağıtın.

Daha ayrıntılı sorun giderme adımları ve açıklamaları için okumaya devam edin.

SSH bağlantı sorunlarını gidermek için kullanılabilir yöntemler

Aşağıdaki yöntemlerden birini kullanarak kimlik bilgilerini sıfırlayabilir, SSH yapılandırmasını sıfırlayabilir veya SSH hizmetinin durumunu giderebilirsiniz:

  • Azure portal - SSH yapılandırmasını veya SSH anahtarını hızlı bir şekilde sıfırlamanız gerekiyorsa ve Azure araçları yüklü değilse harikadır.
  • Azure VM Seri Konsolu - VM seri konsolu SSH yapılandırmasından bağımsız olarak çalışır ve vm'nize etkileşimli bir konsol sağlar. Aslında, "SSH yapamazsınız" durumları özellikle seri konsolun çözmeye yardımcı olmak için tasarlandığı durumlardır. Aşağıda daha fazla ayrıntı bulabilirsiniz.
  • Azure portal aracılığıyla Komut Çalıştır'ı kullanma - Azure portal aracılığıyla Komut Çalıştır işlevini kullanarak temel komutları çalıştırabilirsiniz. Çıkış portala döndürülür.
  • Azure CLI - Zaten komut satırındaysanız, SSH yapılandırmasını veya kimlik bilgilerini hızla sıfırlayın. Klasik bir VM ile çalışıyorsanız , klasik Azure CLI'yı kullanabilirsiniz.
  • Azure VMAccessForLinux uzantısı - SSH yapılandırmasını veya kullanıcı kimlik bilgilerini sıfırlamak için json tanım dosyalarını oluşturun ve yeniden kullanın.

Her sorun giderme adımının ardından VM'nize bağlanmayı yeniden deneyin. Yine de bağlanamıyorsanız sonraki adımı deneyin.

Azure portal kullanma

Azure portal, yerel bilgisayarınıza herhangi bir araç yüklemeden SSH yapılandırmasını veya kullanıcı kimlik bilgilerini sıfırlamak için hızlı bir yol sağlar.

Başlamak için Azure portal vm'nizi seçin. Aşağı kaydırarak Yardım bölümüne gelin ve aşağıdaki örnekte olduğu gibi Parolayı sıfırla'yı seçin:

Azure portal S S H yapılandırmasını veya kimlik bilgilerini sıfırlamak için ekran görüntüsü.

SSH yapılandırmasını sıfırlama

SSH yapılandırmasını sıfırlamak için önceki ekran görüntüsünde olduğu gibi Mod bölümünü seçin Reset configuration only ve ardından Güncelleştir'i seçin. Bu eylem tamamlandıktan sonra VM'nize yeniden erişmeyi deneyin.

Kullanıcı için SSH kimlik bilgilerini sıfırlama

Mevcut bir kullanıcının kimlik bilgilerini sıfırlamak için, önceki ekran görüntüsünde olduğu gibi Mod bölümünde veya Reset password öğesini seçinReset SSH public key. Kullanıcı adını ve SSH anahtarını veya yeni parolayı belirtin, ardından Güncelleştir'i seçin.

Bu menüden VM'de sudo ayrıcalıklarına sahip bir kullanıcı da oluşturabilirsiniz. Yeni bir kullanıcı adı ve ilişkili parola veya SSH anahtarı girip Güncelleştir'i seçin.

Güvenlik kurallarını denetleme

Ağ güvenlik grubundaki bir kuralın sanal makineye giden veya sanal makineden gelen trafiği engelleyip engellemediğini onaylamak için IP akışı doğrulamasını kullanın. Gelen "İzin Ver" NSG kuralının mevcut olduğundan ve SSH bağlantı noktası (varsayılan 22) için önceliklendirildiğinden emin olmak için etkin güvenlik grubu kurallarını da gözden geçirebilirsiniz. Daha fazla bilgi için bkz. VM trafik akışı sorunlarını gidermek için etkili güvenlik kurallarını kullanma.

Yönlendirmeyi denetleme

Bir yolun bir sanal makineye veya sanal makineden trafiğin yönlendirilmesini engellemediğini onaylamak için Ağ İzleyicisi Sonraki atlama özelliğini kullanın. Ayrıca bir ağ arabiriminin tüm etkili yollarını görmek için etkili yolları da gözden geçirebilirsiniz. Daha fazla bilgi için bkz. VM trafik akışı sorunlarını gidermek için etkili yolları kullanma.

Azure VM Seri Konsolu'nu kullanma

Azure VM Seri Konsolu, Linux sanal makineleri için metin tabanlı bir konsola erişim sağlar. Etkileşimli bir kabukta SSH bağlantınızın sorunlarını gidermek için konsolunu kullanabilirsiniz. Seri Konsol kullanma önkoşullarını karşıladığınızdan emin olun ve SSH bağlantınızın sorunlarını daha fazla gidermek için aşağıdaki komutları deneyin.

SSH hizmetinin çalıştığını denetleyin

Hizmet durumunu denetlemek için, geçerli Linux dağıtımlarının çoğunda kullanılabilen aşağıdaki komutu kullanın:

sudo systemctl status sshd.service

Aşağıdaki çıkış örneğine bakın. Çıktıdaki satırdan Active hizmet durumunu denetleyin. Çıkış ayrıca dinlenen bağlantı noktasını ve IP adreslerini de gösterir.

user@hostname:~$ sudo systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-23 17:44:36 UTC; 1 day 3h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 829 (sshd)
      Tasks: 1 (limit: 9535)
     Memory: 5.1M
     CGroup: /system.slice/ssh.service
             └─829 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 23 17:44:35 ubu2004 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on 0.0.0.0 port 22.
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on :: port 22.
Jun 23 17:44:36 ubu2004 systemd[1]: Started OpenBSD Secure Shell server.

Bu komut kullanılamıyorsa veya beklenmeyen sonuçlar döndürüyorsa diğer kullanılabilir komutları kullanın. SSH hizmetinin VM'nizde çalışıp çalışmadığını doğrulamak için komutunu kök olarak veya komutu aracılığıyla sudo kullanabilirsinizss.

Aşağıdaki örnekte komutunun üzerinden sudonasıl çalıştırılacak gösterilmektedirss:

sudo ss --listen --tcp --process --numeric | grep sshd

Not

Komutun ss kullanım dışı bırakıldığından netstat ve modern dağıtımlarda her zaman kullanılamadığından komutu öneririz.

Herhangi bir çıkış varsa, SSH çalışır durumdadır. Aşağıdaki çıkış örneğine bakın:

$ sudo ss -ltpn | grep sshd
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=829,fd=3))
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=829,fd=4))

-ltpn bağımsız değişkenlerin --listen --tcp --process –numeric kısaltılmış biçimidir. Çıkış, 829 SSHD işleminin hem IPv4 hem de IPv6 adreslerinde dinlediğini gösterir.

SSH'nin hangi bağlantı noktasında çalıştığını denetleme

Yukarıdaki komut çıktısı, SSHD işleminin 22 numaralı bağlantı noktasında dinlediğini gösterir. SSHD işlemi başka bir bağlantı noktasında çalışacak şekilde yapılandırıldığında çıkışta bağlantı noktası görüntülenir. Değişikliğin standart yapılandırma dosyasında yapılıp yapılmadığını denetlemek için aşağıdaki komutlardan birini kullanarak / etc/ssh/sshd_config varsayılan yapılandırma dosyasını inceleyin:

grep -i port /etc/ssh/sshd_config

veya

grep -i listen /etc/ssh/sshd_config

Çıkış aşağıdaki gibi görünür:

Port 22

Çıkışta ile # başlayan herhangi bir satır bir açıklamadır ve güvenle yoksayılabilir. Hiçbir şey döndürülmezse veya satırlar açıklamaysa, varsayılan yapılandırma kullanılır. Varsayılan yapılandırma, sistemdeki 22 numaralı bağlantı noktasındaki tüm IP adreslerini dinlemektir.

Azure portal aracılığıyla Çalıştır Komutunu kullanma

Seri Konsol üzerinden komut çalıştıramıyorsanız, örneğin kimlik doğrulaması için yalnızca SSH anahtarları kullanıldığında Komut Çalıştır özelliği komutları vermek ve çıkışı görüntülemek için kullanılabilir. Daha önce Seri Konsol'dan çalıştırılan tüm komutlar, Azure portal Komut Çalıştır bölümünde etkileşimli olmayan bir şekilde çalıştırılabilir. Çıkış Azure portal döndürülür. Komut Çalıştır bağlamında komutları çalıştırmak için kullanılması sudo gerekmez.

Azure CLI'yi kullanma

Henüz yüklemediyseniz en son Azure CLI'yı yükleyin ve az login kullanarak bir Azure hesabında oturum açın.

Özel bir Linux disk görüntüsü oluşturup karşıya yüklediyseniz, Microsoft Azure Linux Aracısı sürüm 2.0.5 veya üzerinin yüklü olduğundan emin olun. Galeri görüntüleri kullanılarak oluşturulan VM'ler için bu erişim uzantısı sizin için zaten yüklü ve yapılandırılmıştır.

SSH yapılandırmasını sıfırlama

Başlangıçta SSH yapılandırmasını varsayılan değerlere sıfırlamayı ve VM'de SSH sunucusunu yeniden başlatmayı deneyebilirsiniz. Bu, kullanıcı hesabı adını, parolasını veya SSH anahtarlarını değiştirmez. Aşağıdaki örnekte, adlı VM'de SSH yapılandırmasını sıfırlamak için az vmmyVMmyResourceGroupuser reset-ssh kullanılır. Kendi değerlerinizi aşağıdaki gibi kullanın:

az vm user reset-ssh --resource-group myResourceGroup --name myVM

Kullanıcı için SSH kimlik bilgilerini sıfırlama

Aşağıdaki örnekte, kimlik bilgilerini içinde adlı myResourceGroupmyVM VM'de myPasswordbelirtilen değere sıfırlamak için myUsernameaz vm user update kullanılır. Kendi değerlerinizi aşağıdaki gibi kullanın:

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

SSH anahtarı kimlik doğrulaması kullanıyorsanız, belirli bir kullanıcı için SSH anahtarını sıfırlayabilirsiniz. Aşağıdaki örnek az vm access set-linux-user komutunu kullanarak içinde adlı vm myVMmyResourceGroupüzerinde adlı myUsernamekullanıcı için depolanan ~/.ssh/id_rsa.pub SSH anahtarını güncelleştirir. Kendi değerlerinizi aşağıdaki gibi kullanın:

az vm user update --resource-group myResourceGroup --name myVM \
    --username myUsername --ssh-key-value ~/.ssh/id_rsa.pub

VMAccess uzantısını kullanma

Linux için VM Erişim Uzantısı, gerçekleştirilecek eylemleri tanımlayan bir json dosyasında okur. Bu eylemler SSHD'yi sıfırlamayı, SSH anahtarını sıfırlamayı veya kullanıcı eklemeyi içerir. VMAccess uzantısını çağırmak için Azure CLI'yı kullanmaya devam edebilirsiniz, ancak isterseniz json dosyalarını birden çok VM'de yeniden kullanabilirsiniz. Bu yaklaşım, daha sonra belirli senaryolar için çağrılabilecek json dosyalarının deposunu oluşturmanıza olanak tanır.

SSHD'yi sıfırlama

Aşağıdaki içeriğe sahip adlı settings.json bir dosya oluşturun:

{
    "reset_ssh":True
}

Azure CLI'yı kullanarak, json dosyanızı belirterek SSHD bağlantınızı sıfırlamak için uzantıyı çağırırsınız VMAccessForLinux . Aşağıdaki örnek, içinde adlı myVMmyResourceGroupVM'de SSHD'yi sıfırlamak için az vm extension set kullanır. Kendi değerlerinizi aşağıdaki gibi kullanın:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Kullanıcı için SSH kimlik bilgilerini sıfırlama

SSHD düzgün çalışıyor gibi görünüyorsa, veren kullanıcının kimlik bilgilerini sıfırlayabilirsiniz. Kullanıcının parolasını sıfırlamak için adlı settings.jsonbir dosya oluşturun. Aşağıdaki örnek için myUsername kimlik bilgilerini içinde myPasswordbelirtilen değere sıfırlar. Kendi değerlerinizi kullanarak dosyanıza settings.json aşağıdaki satırları girin:

{
    "username":"myUsername", "password":"myPassword"
}

Veya bir kullanıcının SSH anahtarını sıfırlamak için, önce adlı settings.jsonbir dosya oluşturun. Aşağıdaki örnek, kimlik myUsername bilgilerini içinde adlı myVMmyResourceGroupVM'de myPasswordbelirtilen değere sıfırlar. Kendi değerlerinizi kullanarak dosyanıza settings.json aşağıdaki satırları girin:

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

Json dosyanızı oluşturduktan sonra, JSON dosyanızı belirterek SSH kullanıcı kimlik bilgilerinizi sıfırlamak üzere uzantıyı çağırmak VMAccessForLinux için Azure CLI'yı kullanın. Aşağıdaki örnek, içinde adlı myVM VM'deki myResourceGroupkimlik bilgilerini sıfırlar. Kendi değerlerinizi aşağıdaki gibi kullanın:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Klasik Azure CLI'yi kullanma

Henüz yüklemediyseniz klasik Azure CLI'yı yükleyin ve Azure aboneliğinize bağlanın. aşağıdaki gibi Resource Manager modunu kullandığınızdan emin olun:

azure config mode arm

Özel bir Linux disk görüntüsü oluşturup karşıya yüklediyseniz, Microsoft Azure Linux Aracısı sürüm 2.0.5 veya üzerinin yüklü olduğundan emin olun. Galeri görüntüleri kullanılarak oluşturulan VM'ler için bu erişim uzantısı sizin için zaten yüklü ve yapılandırılmıştır.

SSH yapılandırmasını sıfırlama

SSHD yapılandırmasının kendisi yanlış yapılandırılmış olabilir veya hizmet bir hatayla karşılaştı. SSH yapılandırmasının geçerli olduğundan emin olmak için SSHD'yi sıfırlayabilirsiniz. SSHD'yi sıfırlamak, atabileceğiniz ilk sorun giderme adımı olmalıdır.

Aşağıdaki örnek, adlı myResourceGroupkaynak grubunda adlı myVM bir VM'de SSHD'yi sıfırlar. Kendi VM ve kaynak grubu adlarınızı aşağıdaki gibi kullanın:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

Kullanıcı için SSH kimlik bilgilerini sıfırlama

SSHD düzgün çalışıyor gibi görünüyorsa, veren kullanıcının parolasını sıfırlayabilirsiniz. Aşağıdaki örnek, kimlik myUsername bilgilerini içinde adlı myVMmyResourceGroupVM'de myPasswordbelirtilen değere sıfırlar. Kendi değerlerinizi aşağıdaki gibi kullanın:

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

SSH anahtarı kimlik doğrulaması kullanıyorsanız, belirli bir kullanıcı için SSH anahtarını sıfırlayabilirsiniz. Aşağıdaki örnek, içinde adlı myVMmyResourceGroupVM üzerinde ~/.ssh/id_rsa.pub adlı myUsernamekullanıcı için içinde depolanan SSH anahtarını güncelleştirir. Kendi değerlerinizi aşağıdaki gibi kullanın:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

VM'leri yeniden başlatma

SSH yapılandırmasını ve kullanıcı kimlik bilgilerini sıfırladıysanız veya bunu yaparken bir hatayla karşılaştıysanız, temel işlem sorunlarını gidermek için VM'yi yeniden başlatmayı deneyebilirsiniz.

Azure portal

Azure portal kullanarak bir VM'yi yeniden başlatmak için vm'nizi seçin ve ardından aşağıdaki örnekte olduğu gibi Yeniden Başlat'ı seçin:

Azure portal bir sanal makineyi yeniden başlatmak için ekran görüntüsü.

Azure CLI

Aşağıdaki örnek, adlı myResourceGroupkaynak grubunda adlı myVM VM'yi yeniden başlatmak için az vm restart komutunu kullanır. Kendi değerlerinizi aşağıdaki gibi kullanın:

az vm restart --resource-group myResourceGroup --name myVM

Azure klasik CLI

Önemli

Klasik VM'ler 1 Eylül 2023'te kullanımdan kaldırılacak

ASM'den IaaS kaynaklarını kullanıyorsanız lütfen geçişinizi 1 Eylül 2023'e kadar tamamlayın. Azure Resource Manager'daki birçok özellik geliştirmelerinden yararlanmak için geçişi daha erken yapmanızı öneririz.

Daha fazla bilgi için bkz. IaaS kaynaklarınızı 1 Eylül 2023'e kadar Azure Resource Manager geçirme.

Aşağıdaki örnek adlı myResourceGroupkaynak grubunda adlı myVM VM'yi yeniden başlatır. Kendi değerlerinizi aşağıdaki gibi kullanın:

azure vm restart --resource-group myResourceGroup --name myVM

VM'leri yeniden dağıtma

Vm'yi Azure'da başka bir düğüme yeniden dağıtabilirsiniz ve bu da temel ağ sorunlarını düzeltebilir. Vm'yi yeniden dağıtma hakkında bilgi için bkz. Sanal makineyi yeni Azure düğümüne yeniden dağıtma.

Not

Bu işlem tamamlandıktan sonra kısa ömürlü disk verileri kaybolur ve sanal makineyle ilişkili dinamik IP adresleri güncelleştirilir.

Azure portal

Azure portal kullanarak bir VM'yi yeniden dağıtmak için VM'nizi seçin ve Yardım bölümüne kadar aşağı kaydırın. Aşağıdaki örnekte olduğu gibi Yeniden Dağıt'ı seçin:

Azure portal bir sanal makineyi yeniden dağıtmak için ekran görüntüsü.

Azure CLI

Aşağıdaki örnekte, adlı myResourceGroupkaynak grubunda adlı myVM VM'yi yeniden dağıtmak için az vm redeploy kullanılır. Kendi değerlerinizi aşağıdaki gibi kullanın:

az vm redeploy --resource-group myResourceGroup --name myVM

Azure klasik CLI

Aşağıdaki örnek adlı myResourceGroupkaynak grubunda adlı myVM VM'yi yeniden dağıtıyor. Kendi değerlerinizi aşağıdaki gibi kullanın:

azure vm redeploy --resource-group myResourceGroup --name myVM

Klasik dağıtım modeli kullanılarak oluşturulan VM'ler

Önemli

Klasik VM'ler 1 Eylül 2023'te kullanımdan kaldırılacak

ASM'den IaaS kaynaklarını kullanıyorsanız lütfen geçişinizi 1 Eylül 2023'e kadar tamamlayın. Azure Resource Manager'daki birçok özellik geliştirmelerinden yararlanmak için geçişi daha erken yapmanızı öneririz.

Daha fazla bilgi için bkz. IaaS kaynaklarınızı 1 Eylül 2023'e kadar Azure Resource Manager geçirme.

Klasik dağıtım modeli kullanılarak oluşturulan VM'ler için en yaygın SSH bağlantı hatalarını çözmek için bu adımları deneyin. Her adımdan sonra VM'ye yeniden bağlanmayı deneyin.

  • uzaktan erişimi Azure portal sıfırlayın. Azure portal vm'nizi seçin ve ardından Uzakı Sıfırla... öğesini seçin.

  • VM'yi yeniden başlatın. Azure portal VM'nizi ve ardından Yeniden Başlat'ı seçin.

  • VM'yi yeni bir Azure düğümüne yeniden dağıtın. Vm'yi yeniden dağıtma hakkında bilgi için bkz. Sanal makineyi yeni Azure düğümüne yeniden dağıtma.

    Bu işlem tamamlandıktan sonra kısa süreli disk verileri kaybolur ve sanal makineyle ilişkili dinamik IP adresleri güncelleştirilir.

  • Linux tabanlı sanal makineler için parolayı veya SSH'yi şu şekilde sıfırlama başlığı altındaki yönergeleri izleyin:

    • Parolayı veya SSH anahtarını sıfırlayın.
    • Bir sudo kullanıcı hesabı oluşturun.
    • SSH yapılandırmasını sıfırlayın.
  • Platform sorunları için VM'nin kaynak durumunu denetleyin.
    VM'nizi seçin ve Ayarlar Sistem>Durumunu Denetle'yi aşağı kaydırın.

Ek kaynaklar

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.