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ı 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 en az 2048 bit uzunluğunda SSH protokolü 2 (SSH-2) RSA ortak-özel anahtar çiftlerini desteklemektedir. ED25519 ve ECDSA gibi diğer anahtar biçimleri desteklenmez.

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.

Dekont

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

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/myprivatekey \
    -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 ö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]-----+

Kaydedilen anahtar dosyaları

Enter file in which to save the key (/home/azureuser/.ssh/id_rsa): ~/.ssh/id_rsa

Bu makale için anahtar çifti adı. Adlı id_rsa bir anahtar çiftinin olması varsayılandır; bazı araçlar özel anahtar dosya adını bekleyebilir id_rsa , bu nedenle bir anahtara sahip olmak iyi bir fikirdir. ~/.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.

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

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. 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.

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:

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 xclipyapacak 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 RFC4716 biçimli bir anahtar oluşturmak için:

ssh-keygen \
-f ~/.ssh/id_rsa.pub \
-e \
-m RFC4716 > ~/.ssh/id_ssh2.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-agentmacOS 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

Özel anahtar parolası artık içinde ssh-agentdepolanır.

Anahtarı var olan bir VM'ye kopyalamak için ssh-copy-id kullanın

Zaten bir VM oluşturduysanız, kullanarak ssh-copy-idLinux 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.