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
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.
- 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 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.
- 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 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:
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 sudo
nası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
myResourceGroup
VM'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
myResourceGroup
VM'de myPassword
belirtilen 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ı myUsername
myVM
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ı myResourceGroup
myVM
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.json
bir dosya oluşturun. Aşağıdaki örnek için myUsername
kimlik bilgilerini içinde myPassword
belirtilen 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.json
bir dosya oluşturun. Aşağıdaki örnek, kimlik myUsername
bilgilerini içinde adlı myVM
myResourceGroup
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 uzantıyı çağırmak VMAccessForLinux
için Azure CLI'yi kullanın. Aşağıdaki örnek, içinde adlı myVM
VM'de myResourceGroup
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
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ı myResourceGroup
kaynak 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
myResourceGroup
VM'de myPassword
belirtilen 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
myResourceGroup
VM üzerinde ~/.ssh/id_rsa.pub
adlı myUsername
kullanı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 CLI
Aşağıdaki örnek, adlı myResourceGroup
kaynak 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 CLI
Aşağıdaki örnek, adlı myResourceGroup
kaynak 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
- 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şim sorunlarını giderme
- 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.
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.