Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: ✔️ Linux VM'leri
Özet
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.
Önemli
New! En önemli sorunları çözmek için VM yardımını deneyin. Windows için VM yardımı veya Linux için VM yardımı çalıştırmanızı öneririz. Bu betik tabanlı tanılama araçları, Azure VM Konuk Aracısı'nı ve genel VM durumunu etkileyen yaygın sorunları belirlemenize yardımcı olur.
VM'lerde performans sorunları yaşıyorsanız, Microsoft Desteği başvurmadan önce bu araçları çalıştırın.
Hızlı sorun giderme adımları
Her sorun giderme adımından sonra VM'ye yeniden bağlanmayı deneyin.
- SSH yapılandırmasını sıfırlayın.
- Kullanıcının kimlik bilgilerini sıfırlayın.
- 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 Virtual Machine Administrator Login veya Virtual Machine User Login rolü atanmalıdır. Aksi takdirde, "İzin reddedildi (ortak anahtar)" hatası alınır. Daha fazla bilgi için bkz. Microsoft Entra login kullanan VM için rol atamalarını yapılandırma.
- VM kaynak durumunu denetleyin.
- VM'yi yeniden başlatın.
- 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 harika.
- 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 yapamaz" durumları, seri konsolun özellikle çözmeye yardımcı olmak için tasarlandığı durumlardır. Daha fazla ayrıntı için aşağıya bakın.
- Komutunu Azure portalı üzerinden kullan - Azure portalı üzerinden Komut Çalıştır işlevini kullanarak temel komutları çalıştırabilirsiniz. Çıkış portala geri gönderilir.
- 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ını 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:
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 gösterildiği gibi Mod bölümünde Reset SSH public key veya Reset password seçeneğini seçin. 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
Ağ İzleyicisi İleri atlama özelliğini kullanarak bir yolun sanal makineye veya sanal makineden gelen trafiği engellemediğini onaylayı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ı konsola erişim sağlar. SSH bağlantınızın sorunlarını etkileşimli bir kabukta gidermek için konsolu 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 ss komutunu, ya root olarak ya da sudo komutu aracılığıyla kullanabilirsiniz.
Aşağıdaki örnek, ss komutunun sudo ile nasıl çalıştırılacağını göstermektedir.
sudo ss --listen --tcp --process --numeric | grep sshd
Not
ss komutunu öneririz çünkü netstat komutu kullanım dışı bırakılmıştır ve modern dağıtımlarda her zaman mevcut değildir.
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 argümanların --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üvenli bir şekilde 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.
Komutunu Azure portalında kullan
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 Konsoldan ç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 kullanma
Henüz yüklemediyseniz en son Azure CLI yükleyin ve az login kullanarak bir Azure hesabında oturum açın.
Özel bir Linux disk görüntüsü oluşturup 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, myResourceGroup üzerindeki myVM adlı VM'de SSH yapılandırmasını sıfırlamak için az vm user reset-ssh komutunu 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 örnek, myUsername üzerindeki myVM adlı VM'de, myPassword olarak belirtilen değere kimlik bilgilerini sıfırlamak için az vm user update komutunu kullanı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, içindeki ~/.ssh/id_rsa.pub adlı VM'de bulunan myUsername adlı kullanıcının myVM içindeki SSH anahtarını güncellemek için myResourceGroup kullanılır. Kendi değerlerinizi aşağıdaki gibi kullanın:
az vm user update --resource-group myResourceGroup --name myVM \
--username myUsername --ssh-key-value "$(cat ~/.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 kullanmaya devam edebilirsiniz, ancak isterseniz json dosyalarını birden çok VM arasında 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 kullanarak json dosyanızı belirterek SSHD bağlantınızı sıfırlamak için VMAccessForLinux uzantısını çağırırsınız. Aşağıdaki örnekte, myResourceGroup içindeki myVM adlı 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ırlayın.
SSHD düzgün çalışıyor gibi görünüyorsa, belirli bir 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, myUsername özlük bilgilerini myResourceGroup içinde myVM adlı VM'de myPassword belirtilen 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 VMAccessForLinux uzantısını çağırmak için Azure CLI kullanın. Aşağıdaki örnek, myResourceGroup içindeki myVM adlı VM'de kimlik 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
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 gösterildiği gibi Restart seçin:
Azure portalında bir sanal makineyi yeniden başlatmak için ekran görüntüsü.
Azure CLI
Aşağıdaki örnek, az vm restart komutunu, myResourceGroup adlı kaynak grubunda myVM adlı VM'yi yeniden başlatmak için 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
Vm'yi Azure 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. Yeni Azure düğümüne sanal makine 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 ekranı aşağı kaydırarak Help bölümüne gelin. Aşağıdaki örnekte olduğu gibi Yeniden Dağıt'ı seçin:
Azure CLI
Aşağıdaki örnek, myResourceGroup adlı kaynak grubunda myVM adlı VM'yi yeniden dağıtmak için az vm redeploy kullanır. Kendi değerlerinizi aşağıdaki gibi kullanın:
az vm redeploy --resource-group myResourceGroup --name myVM
Ek kaynaklar
- Sonraki adımları takip ettikten sonra da VM'nizde SSH yapamıyorsanız sorununuzu çözmek için ek adımları gözden geçirmek için daha ayrıntılı sorun giderme adımlarına bakın.
- Uygulama erişimi sorunlarını giderme hakkında daha fazla bilgi için bkz. Azure sanal makinesinde çalışan bir uygulamaya erişimi sorgulama
- Klasik dağıtım modeli kullanılarak oluşturulan sanal makinelerin sorunlarını giderme hakkında daha fazla bilgi için bkz . Linux tabanlı sanal makineler için parola veya SSH sıfırlama.