Ayrıntılı adımlar: Azure'da Linux VM'sinde kimlik doğrulaması için SSH anahtarları oluşturma ve yönetme
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri
Güvenli kabuk (SSH) anahtar çifti ile kimlik doğrulaması için SSH anahtarlarını kullanan bir Linux sanal makinesi oluşturabilirsiniz. Bu makalede, SSH istemci bağlantıları için SSH RSA ortak-özel anahtar dosya çiftinin nasıl oluşturulacağı ve kullanılacağı gösterilmektedir.
SSH anahtarlarının daha ayrıntılı bir açıklaması yerine hızlı komutlar istiyorsanız bkz . Azure'da Linux VM'leri için SSH ortak-özel anahtar çifti oluşturma.
SSH anahtarları oluşturmak ve bir Windows bilgisayarından Linux VM'sine bağlanmak için bunları kullanmak için bkz. Azure'da Windows ile SSH anahtarlarını kullanma. Azure portalını kullanarak portalda VM oluşturmak için SSH anahtarları oluşturabilir ve yönetebilirsiniz.
SSH ve anahtarlara genel bakış
SSH , güvenli olmayan bağlantılar üzerinden güvenli oturum açma işlemleri sağlayan şifreli bir bağlantı protokolüdür. SSH şifreli bir bağlantı sağlasa da, SSH bağlantılarıyla parola kullanmak vm'yi deneme yanılma saldırılarına karşı savunmasız bırakır. SSH anahtarları olarak da bilinen ortak-özel anahtar çifti kullanarak SSH üzerinden bir VM'ye bağlanmanızı öneririz.
Ortak anahtar VM'nize yerleştirilir.
Özel anahtar yerel sisteminizde kalır. Bu özel anahtarı koruyun. Özel anahtarı paylaşmayın.
VM'nize bağlanmak için bir SSH istemcisi kullandığınızda (ortak anahtara sahip), uzak VM istemciyi test eder ve doğru özel anahtara sahip olduğundan emin olur. İstemci özel anahtara sahipse vm'ye erişim izni verilir.
Kuruluşunuzun güvenlik ilkelerine bağlı olarak, birden çok Azure VM'sine ve hizmetlerine erişmek için tek bir ortak-özel anahtar çiftini yeniden kullanabilirsiniz. Erişmek istediğiniz her VM veya hizmet için ayrı bir anahtar çiftine ihtiyacınız yoktur.
Ortak anahtarınız herkesle paylaşılabilir, ancak özel anahtarınız yalnızca sizin (veya yerel güvenlik altyapınızın) erişimi olmalıdır.
Desteklenen SSH anahtar biçimleri
Azure şu anda aşağıdaki anahtar türlerini desteklemektedir:
- En az 2048 bit uzunluğunda SSH protokolü 2 (SSH-2) RSA (Rivest, Shamir, Adleman)
- Sabit uzunluğu 256 bit olan ED25519 Tuşları
Elliptic-curve Diffie–Hellman (ECDH) ve Eliptik Eğri dijital imza algoritması (ECDSA) gibi diğer temel biçimler şu anda desteklenmemekte.
SSH anahtarlarının kullanımı ve avantajları
Ortak anahtarı belirterek bir Azure VM oluşturduğunuzda, Azure ortak anahtarı (biçimde) VM'deki .pub
klasöre ~/.ssh/authorized_keys
kopyalar. içindeki ~/.ssh/authorized_keys
SSH anahtarları, bir SSH bağlantısı sırasında bağlanan istemcilerin ilgili özel anahtarı sunmasını sağlar. Kimlik doğrulaması için SSH anahtarları kullanan bir Azure Linux VM'de Azure, SSH sunucusunun parola kimlik doğrulama sistemini devre dışı bırakır ve yalnızca SSH anahtarı kimlik doğrulamasına izin verir. SSH anahtarlarıyla bir Azure Linux VM oluşturarak VM dağıtımının güvenliğini sağlamaya yardımcı olabilir ve dosyada parolaları devre dışı bırakmanın tipik dağıtım sonrası yapılandırma adımını sshd_config
kaydedebilirsiniz.
SSH anahtarlarını kullanmak istemiyorsanız Linux VM'nizi parola kimlik doğrulaması kullanacak şekilde ayarlayabilirsiniz. VM'niz İnternet'e açık değilse parola kullanmak yeterli olabilir. Ancak, yine de her Linux VM için parolalarınızı yönetmeniz ve en düşük parola uzunluğu ve normal sistem güncelleştirmeleri gibi iyi durumdaki parola ilkelerini ve uygulamalarını korumanız gerekir.
ssh-keygen ile anahtar oluşturma
Anahtarları oluşturmak için tercih edilen komut, Azure Cloud Shell, macOS veya Linux konağı ve Windows(10 & 11) içindeki OpenSSH yardımcı programlarıyla kullanılabilen komutudur ssh-keygen
. ssh-keygen
bir dizi soru sorar ve ardından bir özel anahtar ve eşleşen bir ortak anahtar yazar.
SSH anahtarları, varsayılan olarak ~/.ssh
dizininde tutulur. ~/.ssh
dizininiz yoksa ssh-keygen
komutu, doğru izinler ile sizin için oluşturur. Kaynak olarak bir SSH anahtarı oluşturulur ve daha sonra kullanmak üzere Azure'da depolanır.
Not
Ayrıca, SSH anahtarları oluşturma ve depolama bölümünde açıklandığı gibi az sshkey create komutuyla Azure CLI ile anahtar oluşturabilirsiniz.
Temel örnek
Aşağıdaki ssh-keygen
komut, dizinde ~/.ssh
varsayılan olarak 4096 bit SSH RSA ortak ve özel anahtar dosyaları oluşturur. Geçerli konumda mevcut bir SSH anahtar çifti bulunursa, bu dosyaların üzerine yazılır.
ssh-keygen -m PEM -t rsa -b 4096
Aşağıdaki ssh-keygen
komut, dizinde ~/.ssh
varsayılan olarak 256 bit ED25519 ortak ve özel anahtar dosyaları oluşturur. Geçerli konumda mevcut bir SSH anahtar çifti bulunursa, bu dosyaların üzerine yazılır.
ssh-keygen -m PEM -t ed25519
Ayrıntılı örnek
Aşağıdaki örnekte SSH RSA anahtar çifti oluşturmak için ek komut seçenekleri gösterilmektedir. Geçerli konumda bir SSH anahtar çifti varsa, bu dosyaların üzerine yazılır.
ssh-keygen \
-m PEM \
-t rsa \
-b 4096 \
-C "azureuser@myserver" \
-f ~/.ssh/mykeys/myrsaprivatekey \
-N mypassphrase
Aşağıdaki örnekte SSH ED25519 anahtar çifti oluşturmak için ek komut seçenekleri gösterilmektedir. Geçerli konumda bir SSH anahtar çifti varsa, bu dosyaların üzerine yazılır.
ssh-keygen \
-m PEM \
-t ed25519 \
-C "azureuser@myserver" \
-f ~/.ssh/mykeys/myedprivatekey \
-N mypassphrase
Komut açıklaması
ssh-keygen
= anahtarları oluşturmak için kullanılan program
-m PEM
= anahtarı PEM olarak biçimlendirme
-t rsa
= oluşturulacak anahtar türü, bu örnekte RSA biçiminde
-b 4096
= anahtardaki bit sayısı, bu örnekte 4096
-C "azureuser@myserver"
= kolayca tanımlamak için ortak anahtar dosyasının sonuna eklenen bir açıklama. Normalde açıklama olarak bir e-posta adresi kullanılır, ancak altyapınız için en uygun olan adresi kullanın.
-f ~/.ssh/mykeys/myprivatekey
= varsayılan adı kullanmamayı seçerseniz özel anahtar dosyasının dosya adı. ile .pub
eklenen ilgili ortak anahtar dosyası aynı dizinde oluşturulur. Dizinin var olması gerekir.
-N mypassphrase
= özel anahtar dosyasına erişmek için kullanılan ek bir parola.
ssh-keygen (RSA) örneği
ssh-keygen -t rsa -m PEM -b 4096 -C "azureuser@myserver"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/azureuser/.ssh/id_rsa.
Your public key has been saved in /home/azureuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vFfHHrpSGQBd/oNdvNiX0sG9Vh+wROlZBktNZw9AUjA azureuser@myserver
The key's randomart image is:
+---[RSA 4096]----+
| .oE=*B*+ |
| o+o.*++|
| .oo++*|
| . .B+.O|
| S o=BO.|
| . .o++o |
| . ... . |
| .. . |
| .. |
+----[SHA256]-----+
Ssh-keygen örneği (ED25519)
ssh-keygen -t ed25519 -m PEM -C "azureuser@myserver"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/azureuser/.ssh/id_ed25519.
Your public key has been saved in /home/azureuser/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:vFfHHrpSGQBd/oNdvNiX0sG9Vh+wROlZBktNZw9AUjA azureuser@myserver
The key's randomart image is:
+---[ED25519 256]----+
| |
|.. . |
|o+.o . |
|*=o o o + + |
|*+o+ oSB + o |
|**++o.+oo = . |
|=+*..*.o E |
|.. o o.. |
| .o. |
+----[SHA256]-----+
Kaydedilen anahtar dosyaları
Enter file in which to save the key (/home/azureuser/.ssh/id_rsa): ~/.ssh/id_rsa
veya
Enter file in which to save the key (/home/azureuser/.ssh/id_ed25519): ~/.ssh/id_ed25519
RSA ve ED25519 için varsayılan anahtar çifti adları sırasıyla ve şeklindedirid_rsa
; bazı araçlar veya id_ed25519
özel anahtar dosya adını bekleyebilirid_rsa
, bu nedenle iyi bir fikirdir.id_ed25519
~/.ssh/
dizini, SSH anahtar çiftleri ve SSH yapılandırma dosyası için varsayılan konumdur. Tam yol belirtilmezse ssh-keygen
tarafından oluşturulan anahtarlar varsayılan ~/.ssh
dizininde değil geçerli çalışma dizininde olur.
~/.ssh
Dizinin listesi
Dizindeki ~/.ssh
mevcut dosyaları görüntülemek için aşağıdaki komutu çalıştırın. Dizinde hiçbir dosya bulunmazsa veya dizinin kendisi eksikse, önceki tüm komutların başarıyla çalıştırıldığından emin olun. Belirli Linux dağıtımlarında bu dizindeki dosyaları değiştirmek için kök erişime ihtiyacınız olabilir.
RSA Anahtar çifti:
ls -al ~/.ssh
-rw------- 1 azureuser staff 1675 Aug 25 18:04 id_rsa
-rw-r--r-- 1 azureuser staff 410 Aug 25 18:04 id_rsa.pub
ED25519 Anahtar çifti:
ls -al ~/.ssh
-rw------- 1 azureuser staff 1675 Aug 25 18:04 id_ed25519
-rw-r--r-- 1 azureuser staff 410 Aug 25 18:04 id_ed25519.pub
Anahtar parolası
Enter passphrase (empty for no passphrase):
Özel anahtarınıza parola eklemeniz kesinlikle önerilir. Anahtar dosyasını korumak için parola olmadan, dosyaya sahip olan herkes ilgili ortak anahtara sahip herhangi bir sunucuda oturum açmak için bu parolayı kullanabilir. Parola eklemek, birisinin özel anahtar dosyanıza erişebilmesi durumunda daha fazla koruma sağlar ve anahtarları değiştirmeniz için size zaman verir.
Dağıtım sırasında anahtarları otomatik olarak oluşturma
VM'nizi oluşturmak için Azure CLI kullanıyorsanız, isteğe bağlı olarak az vm create komutunu seçeneğiyle --generate-ssh-keys
çalıştırarak hem genel hem de özel SSH anahtar dosyaları oluşturabilirsiniz. Bu komut, ek bayrak --ssh-key-type
komutu geçirebileceğiniz ED25519 anahtarları oluşturmak için varsayılan olarak RSA anahtar türüne geçer. Anahtarlar ~/.ssh dizininde depolanır. Önceden yapılandırılmış bazı İşlem Galerisi görüntüleri gibi, bu komut seçeneğinin bu konumda zaten varsa anahtarların üzerine yazılmadığını unutmayın.
Temel örnek
Ed25519 SSH anahtar çifti ile birlikte basit bir Ubuntu Linux VM oluşturun.
az vm create -n MyVm -g MyResourceGroup --image Ubuntu2204 --generate-ssh-keys --ssh-key-type ed25519
VM dağıtırken SSH ortak anahtarı sağlama
Kimlik doğrulaması için SSH anahtarları kullanan bir Linux VM oluşturmak için Azure portalı, CLI, Resource Manager şablonlarını veya diğer yöntemleri kullanarak VM oluştururken SSH ortak anahtarınızı sağlayın. Portalı kullanırken ortak anahtarın kendisini girersiniz. Vm'nizi mevcut bir ortak anahtarla oluşturmak için Azure CLI kullanıyorsanız, az vm create komutunu seçeneğiyle çalıştırarak bu ortak anahtarın --ssh-key-value
değerini veya konumunu belirtin.
SSH ortak anahtarının biçimini bilmiyorsanız, aşağıdaki gibi komutunu çalıştırarak cat
ortak anahtarınızı görebilirsiniz ve yerine ~/.ssh/id_rsa.pub
kendi ortak anahtar dosya konumunuz yazın:
RSA anahtar çifti
cat ~/.ssh/id_rsa.pub
Çıkış aşağıdakine benzer (aşağıda yeniden işlem yapılmış örnek):
ssh-rsa XXXXXXXXXXc2EAAAADAXABAAABAXC5Am7+fGZ+5zXBGgXS6GUvmsXCLGc7tX7/rViXk3+eShZzaXnt75gUmT1I2f75zFn2hlAIDGKWf4g12KWcZxy81TniUOTjUsVlwPymXUXxESL/UfJKfbdstBhTOdy5EG9rYWA0K43SJmwPhH28BpoLfXXXXXG+/ilsXXXXXKgRLiJ2W19MzXHp8z3Lxw7r9wx3HaVlP4XiFv9U4hGcp8RMI1MP1nNesFlOBpG4pV2bJRBTXNXeY4l6F8WZ3C4kuf8XxOo08mXaTpvZ3T1841altmNTZCcPkXuMrBjYSJbA8npoXAXNwiivyoe3X2KMXXXXXdXXXXXXXXXXCXXXXX/ azureuser@myserver
Ortak anahtar dosyasının içeriğini kopyalayıp Azure portalına veya Resource Manager şablonuna yapıştırırsanız, ek boşluk kopyalamadığınızdan veya ek satır sonları eklemediğinizden emin olun. Örneğin, macOS kullanıyorsanız, içeriği kopyalamak için ortak anahtar dosyasını (varsayılan olarak, ~/.ssh/id_rsa.pub
) pbcopy'ye aktarabilirsiniz (gibi aynı şeyi xclip
yapacak başka Linux programları da vardır).
Çok satırlı biçimde bir ortak anahtar kullanmayı tercih ederseniz, daha önce oluşturduğunuz ortak anahtardan 'pem' kapsayıcısında RFC4716 biçimlendirilmiş bir anahtar oluşturabilirsiniz.
Mevcut bir SSH ortak anahtarından RFC4716 biçimlendirilmiş anahtar oluşturmak için:
ssh-keygen \
-f ~/.ssh/id_rsa.pub \
-e \
-m RFC4716 > ~/.ssh/id_ssh2.pem
ED25519 anahtar çifti
cat ~/.ssh/id_ed25519.pub
Çıkış aşağıdakine benzer (aşağıda yeniden işlem yapılmış örnek):
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP6I5JuhGq3RidMNpxrplIQwEfc4Rh7UyV8JYYH2U2xA azureuser@myserver
Ortak anahtar dosyasının içeriğini kopyalayıp Azure portalına veya Resource Manager şablonuna yapıştırırsanız, ek boşluk kopyalamadığınızdan veya ek satır sonları eklemediğinizden emin olun. Örneğin, macOS kullanıyorsanız, içeriği kopyalamak için ortak anahtar dosyasını (varsayılan olarak, ~/.ssh/id_ed25519.pub
) pbcopy'ye aktarabilirsiniz (gibi aynı şeyi xclip
yapacak başka Linux programları da vardır).
Çok satırlı biçimde bir ortak anahtar kullanmayı tercih ederseniz, daha önce oluşturduğunuz ortak anahtardan 'pem' kapsayıcısında RFC4716 biçimlendirilmiş bir anahtar oluşturabilirsiniz.
Var olan bir SSH ortak anahtarından PEM biçimli bir anahtar oluşturmak için:
ssh-keygen \
-f ~/.ssh/id_ed25519.pub \
-e \
-m RFC4716 > ~/.ssh/id_edssh.pem
SSH istemcisiyle VM'nize SSH
Azure VM'nizde dağıtılan ortak anahtar ve yerel sisteminizdeki özel anahtar ile VM'nizin IP adresini veya DNS adını kullanarak VM'nize SSH gönderin. Aşağıdaki komuttaki azureuser ve myvm.westus.cloudapp.azure.com yerine yönetici kullanıcı adını ve tam etki alanı adını (veya IP adresini) yazın:
ssh azureuser@myvm.westus.cloudapp.azure.com
Anahtar çiftinizi oluştururken parola sağladıysanız, oturum açma işlemi sırasında istendiğinde parolayı girin. (Sunucu ~/.ssh/known_hosts
klasörünüze eklenir ve Azure VM’nizdeki ortak anahtar değiştirilene veya sunucu adı ~/.ssh/known_hosts
konumundan kaldırılana kadar yeniden bağlanmanız istenmez.)
VM tam zamanında erişim ilkesini kullanıyorsa, VM'ye bağlanabilmeniz için önce erişim istemeniz gerekir. Tam zamanında ilkesi hakkında daha fazla bilgi için bkz . Tam zamanında ilkesini kullanarak sanal makine erişimini yönetme.
Özel anahtar parolanızı depolamak için ssh-agent kullanma
Özel anahtar dosya parolanızı her SSH oturum açmasıyla yazmamak için, özel anahtar dosya parolanızı yerel sisteminizde önbelleğe almak için kullanabilirsiniz ssh-agent
. Mac kullanıyorsanız, çağırdığınızda ssh-agent
macOS Anahtar Zinciri özel anahtar parolasını güvenli bir şekilde depolar.
Parolayı etkileşimli olarak kullanmanız gerekmemesi için SSH sistemini anahtar dosyaları hakkında doğrulayın ve ssh-add
kullanınssh-agent
.
eval "$(ssh-agent -s)"
Şimdi ssh-add
komutunu kullanarak özel anahtarı ssh-agent
öğesine ekleyin.
ssh-add ~/.ssh/id_rsa
veya
ssh-add ~/.ssh/id_ed25519
Özel anahtar parolası artık içinde ssh-agent
depolanır.
Anahtarı var olan bir VM'ye kopyalamak için ssh-copy-id kullanın
Zaten bir VM oluşturduysanız, kullanarak ssh-copy-id
Linux VM'nize yeni bir SSH ortak anahtarı ekleyebilirsiniz.
ssh-copy-id -i ~/.ssh/id_rsa.pub azureuser@myserver
SSH yapılandırma dosyası oluşturma ve yapılandırma
Oturum açma işlemlerinizi hızlandırmak ve SSH istemci davranışınızı iyileştirmek için bir SSH yapılandırma dosyası (~/.ssh/config
) oluşturup yapılandırabilirsiniz.
Aşağıdaki örnekte, varsayılan SSH özel anahtarını kullanarak belirli bir VM'de kullanıcı olarak hızlı bir şekilde oturum açmak için kullanabileceğiniz basit bir yapılandırma gösterilmektedir.
Dosyayı oluşturun.
touch ~/.ssh/config
Yeni SSH yapılandırmasını eklemek için dosyayı düzenleyin
vim ~/.ssh/config
Konak VM'niz için uygun yapılandırma ayarlarını ekleyin. Bu örnekte VM adı (Konak) myvm, hesap adı (Kullanıcı) azureuser ve IP Adresi veya FQDN (Ana Bilgisayar Adı) 192.168.0.255'tir.
# Azure Keys
Host myvm
Hostname 192.168.0.255
User azureuser
# ./Azure Keys
Her birinin kendi ayrılmış anahtar çiftini kullanmasını sağlamak için ek konaklar için yapılandırmalar ekleyebilirsiniz. Daha gelişmiş yapılandırma seçenekleri için bkz . SSH yapılandırma dosyası .
Artık bir SSH anahtar çiftiniz ve yapılandırılmış bir SSH yapılandırma dosyanız olduğuna göre, Linux VM'nize hızlı ve güvenli bir şekilde uzaktan erişebilirsiniz. Aşağıdaki komutu çalıştırdığınızda, SSH, SSH yapılandırma dosyasındaki Host myvm
bloktaki tüm ayarları bulur ve yükler.
ssh myvm
SSH anahtarı kullanarak bir sunucuda ilk kez oturum açtığınızda, komut sizden bu anahtar dosyasının parolasını ister.
Sonraki adımlar
Sonraki adım, yeni SSH ortak anahtarını kullanarak Azure Linux VM’ler oluşturmaktır. Oturum açma olarak SSH ortak anahtarıyla oluşturulan Azure VM'leri, varsayılan oturum açma yöntemi olan parolalarla oluşturulan VM'lerden daha güvenlidir.