Aracılığıyla paylaş


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

Şunlar için geçerlidir: ✔️ Linux VM'leri

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önlendirme/eşleme 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 Açma rolü atanmalıdır. Aksi takdirde, "İzin reddedildi (ortak anahtar)" hatası alınır. Daha fazla bilgi için bkz . Microsoft Entra oturum açma bilgilerini kullanan VM için rol atamalarını yapılandırma.
  4. VM kaynak durumunu denetleyin.
    • VM'nin iyi durumda olduğunu bildirdiğinden emin olun.
    • Önyükleme tanılamasını etkinleştirdiyseniz VM'nin günlüklerde önyükleme hataları bildirmediğini doğrulayın.
  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, 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 olamaz" durumları özellikle seri konsolun çözmeye yardımcı olmak için tasarlandığı durumlardır. Daha fazla ayrıntı için aşağıya bakın.
  • Azure portalı üzerinden Komut Çalıştır'ı kullanma - Azure portalı üzerinden 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.
  • 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ında 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ında SSH 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 Reset configuration only ekran görüntüsünde olduğu gibi Mod bölümünü seçin ve ardından Güncelleştir'i seçin. Bu eylem tamamlandıktan sonra VM'nize yeniden erişmeyi deneyin.

Bir kullanıcının 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ı için önceliklendirildiğinden (varsayılan 22) emin olmak için etkili 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ı 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ğ arabirimi için tüm etkili yolları görmek için etkili yolları gözden geçirebilirsiniz. Daha fazla bilgi için bkz . VM trafik akışı sorunlarını gidermek için etkili yolları kullanma.

Azure VM Seri Konsolunu 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'un kullanımıyla ilgili önkoşulları 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ışıp çalışmadığını denetleyin

Hizmet durumunu denetlemek için, çoğu geçerli Linux dağıtımında 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 kullanım dışı bırakıldığından ss netstat ve modern dağıtımlarda her zaman kullanılamadığından komutunu ö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. Çıktı, 829 SSHD işleminin hem IPv4 hem de IPv6 adreslerinde dinlediğini gösterir.

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

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, bağlantı noktası çıkışta 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ı üzerinden Komut Çalıştır'ı 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ındaki Komut Çalıştır bölümünde etkileşimli olmayan bir şekilde çalıştırılabilir. Çıkış Azure portalına 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'yi 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üklenmiş 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 örnek, içinde adlı myVM myResourceGroupVM'de SSH yapılandırmasını sıfırlamak için az vm user reset-ssh kullanır. Kendi değerlerinizi aşağıdaki gibi kullanın:

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

Bir kullanıcının SSH kimlik bilgilerini sıfırlama

Aşağıdaki örnekte, kimlik bilgilerini içinde adlı myVM myResourceGroupVM'de myPasswordbelirtilen değere sıfırlamak için myUsername az 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 örnekte az vm access set-linux-user kullanılarak içinde adlı kullanıcı için içinde depolanan ~/.ssh/id_rsa.pub SSH anahtarı, içinde adlı myUsernamemyVM VM'de myResourceGroup güncelleştirilir. 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'yi 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 örnekte, içinde adlı myResourceGroupmyVM VM'de SSHD'yi sıfırlamak için az vm extension set kullanılı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

Bir kullanıcının 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ı myVM myResourceGroupVM'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'yi kullanın. Aşağıdaki örnek, içinde adlı myVM VM'de 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

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'nizi ve kaynak grubu adlarınızı aşağıdaki gibi kullanın:

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

Bir kullanıcının 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ı myVM myResourceGroupVM'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ı myVM myResourceGroupVM ü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

Bir VM’yi 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ı çözmek için VM'yi yeniden başlatmayı deneyebilirsiniz.

Azure portal

Azure portalını 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ında bir sanal makineyi yeniden başlatma 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

Bir VM’yi yeniden dağıtma

Bir VM'yi Azure'ın içindeki 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ını 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ında bir sanal makineyi yeniden dağıtma işleminin ekran görüntüsü.

Azure CLI

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

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

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.