Для развертывания Linux в Windows Azure требуется открытый ключ x509 в кодировке PEM или DER, чтобы включить аутентифицированный удаленный вход через SSH. Этот пост дополняет http://www.windowsazure.com/en-us/manage/linux/how-to-guides/ssh-into-linux/ и включает генерацию ключа в простой сценарий оболочки как в Linux, так и в Windows.
В этой статье мы сгенерируем самоподписанную пару открытый / закрытый kley для тестирования с использованием openssl, который будет использоваться при подготовке виртуальной машины Linux. Сгенерированный закрытый ключ можно использовать для подключения к Linux с помощью команды ssh из Linux или использования Putty.exe в качестве клиента SSH в Linux или Windows.
В этой статье «Linux» и «Ubuntu» используются взаимозаменяемо; Ubuntu 11.10 использовался для тестирования этого процесса. Ниже приведены подробные инструкции по созданию пары ключей SSH, совместимой с Windows Azure, в Ubuntu и Windows:
Linux (Ubuntu)
На локальном компьютере Linux установите openssl, если он еще не существует, с помощью следующей команды:
apt-get install openssl
Приведенная выше команда должна привести openssl к последней версии. Описанный здесь процесс генерации ключа был протестирован с OpenSSL 1.0.1c.
Проверьте установленную версию, выполнив команду оболочки:
openssl version –v
Ниже приведен скрипт bash для генерации пары ключей; давайте сохраним это в файле с именем gensshkey.sh:
gensshkey.sh: #!/bin/bash REQUIRED_ARGS=1 E_NOT_ENOUGH_ARGS=65 #first argument will be used as the key prefix #second argument is optional and if given will be used as a pass #phrase for DES3 protection of the private key case $# in 1) openssl req -x509 -days 365 -newkey rsa:2048 -keyout $1sshpvt.pem -out $1pub.pem -nodes openssl rsa -in $1sshpvt.pem -out $1pvt.pem ;; 2) openssl req -x509 -days 365 -newkey rsa:2048 -keyout $1sshpvt.pem -out $1pub.pem -passout pass:$2 openssl rsa -in $1sshpvt.pem -passin pass:$2 -out $1pvt.pem -des3 -passout pass:$2 ;; *) echo "Usage for unprotected private key: gensshkey.sh <key_prefix>" echo "Example: gensshkey.sh \"db\"" echo "Usage for password protected private key: gensshkey.sh <key_prefix> <pass phrase>" echo "Example: gensshkey.sh db pass@word1" exit $E_NOT_ENOUGH_ARGS ;; esac echo "generated $1sshpvt.pem, $1pub.pem and $1pvt.pem"
gensshkey.sh принимает два аргумента командной строки: префикс ключа и пароль, как показано ниже:
gensshkey.sh db pass@word1
Выполнение команды openssl через вышеприведенный скрипт запросит гео и личную информацию, для которой могут быть приняты значения по умолчанию. Введенные вами значения никак не повлияют на целостность ключей. Это сгенерирует dbsshkey.pem, dbpvt.pem и dbpub.pem с закрытым ключом DES3, зашифрованным парольной фразой «pass @ word1».
gensshkey.sh также может быть использован для генерации открытого ключа закрытого ключа (не рекомендуется для реального производственного использования), пропуская парольную фразу, как показано ниже:
gensshkey.sh db
Сгенерированный выше файл dbsshkey.pem можно использовать с командой ssh из локальной коробки Linux. Но сначала нам нужно ограничить права доступа к этому ключевому файлу; в противном случае ssh будет жаловаться, что ключ слишком открыт. Ниже приведена последовательность команд:
chmod 600 dhsshkey.pem ssh -i dbsshkey.pem -p <ssh_port> <machine_name.cloudapp.net
Если вы предпочитаете putty.exe в качестве SSH-клиента, используйте dbpvt.pem, чтобы преобразовать его в формат .PPK (из меню «Преобразования -> Импортировать ключ -> Сохранить личный ключ на панели инструментов»), используя puttygen.exe и используйте .ppk файл с putty.exe для аутентификации клиента. Использование файла puttygen.exe описано здесь: http://www.windowsazure.com/en-us/manag e / linux / руководство по использованию / ssh-into-linux / .
Процесс подготовки виртуальной машины Linux описан по адресу: http://www.windowsazure.com/en-us/manage/linux/tutorials/virtual-machine-from-gallery/ . На шаге 4 процесса инициализации, показанного на приведенной выше странице, установите флажок «SECURE USING SSH KEY» и предоставьте файл открытого ключа (например, сгенерированный выше dbpub.pem), чтобы механизм инициализации мог внедрить открытый ключ в файл .ssh / папка author_keys.
Windows Server 2008 R2/Windows 7
If you are planning to use generate SSH keys on a Windows client (this was tested on Windows Server 2008 R2; it should work on Windows 7 as well) and use putty.exe on Windows to SSH into an Azure hosted Linux box, here is a simple shell script to help with the keys.
Windows binaries of the openssl can be obtained from http://www.openssl.org/related/binaries.html. The following batch file simplifies the usage of openssl which we will save it as gensshkey_win.cmd.
gensshkey_win.cmd: @echo off if "%1" == "" goto error if "%2" == "" goto nodes openssl req -x509 -config C:\OpenSSL-Win64\bin\openssl.cfg -days 365 -newkey rsa:2048 -keyout %1sshkey.pem -out %1pub.pem -passout pass:%2 openssl rsa -in %1sshkey.pem -passin pass:%2 -out %1pvt.pem -des3 -passout pass:%2 echo "generated" %1sshkey.pem, %1pub.pem and %1pvt.pem goto eof :nodes openssl req -x509 -config C:\OpenSSL-Win64\bin\openssl.cfg -days 365 -newkey rsa:2048 -keyout %1sshkey.pem -out %1pub.pem -nodes openssl rsa -in %1sshkey.pem -out %1pvt.pem echo "generated" %1sshkey.pem, %1pub.pem and %1pvt.pem goto eof :error echo "usage: gensshkey_win <key prefix> <optional pass phrase>" echo "key prefix used to prefix the generated files; use a prefix that represent your key usage" echo "example: gensshkey_win db pass@word1 echo "example: gensshkey_win db :eof
Execute the following command to generate a pass phrase protected key pair:
gensshkey_win.cmd db pass@word1
Execution of the openssl through the above command will prompt for geo and personal information as mentioned previously; just hit ENTER if you are ok with the defaults.
This will generate dbsshkey.pem, dbpvt.pem and dbpub.pem with the private key DES3 encrypted with pass phrase “pass@word1” similar to the openssl process on Linux.
For clear text private key, invoke the above shell script with just the prefix as shown below.
gensshkey_win.cmd db
dbsshkey.pem thus generated can be used from within Linux to connect to other Linux instances using ssh command. dbpvt.pem can be used to convert it to .PPK format through puttygen.exe for using putty.exe usage as the SSH client on Windows and Linux.
For more Linux on Windows Azure related information visit: http://www.windowsazure.com/en-us/manage/linux/.