Подключиться к виртуальной машине Linux по SSH
Рекомендуемый способ подключения к виртуальной машине по SSH основан на использовании пары ключей: открытый ключ размещается на ВМ, а закрытый ключ хранится у пользователя. Подключение с помощью пары ключей более безопасно, чем подключение по логину и паролю.
Примечание
В публичных образах Linux, предоставляемых Yandex.Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.
Создание пары ключей SSH
Чтобы подключаться к виртуальной машине по SSH, нужна пара ключей: открытый ключ размещается на виртуальной машине, а закрытый ключ хранится у пользователя. Такой способ более безопасен, чем подключение по логину и паролю.
Примечание
В публичных образах Linux, предоставляемых Yandex.Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.
Чтобы создать пару ключей:
-
Откройте терминал.
-
Создайте новый ключ с помощью команды
ssh-keygen
:$ ssh-keygen -t rsa -b 2048
После выполнения команды вам будет предложено указать имена файлов, в которые будут сохранены ключи и ввести пароль для закрытого ключа. По умолчанию используется имя
id_rsa
, ключи создаются в директории~/.ssh
.Публичная часть ключа будет сохранена в файле
<имя_ключа>.pub
. Вставьте эту часть ключа в поле SSH-ключ при создании новой виртуальной машины через консоль управления.
-
Запустите
cmd.exe
илиpowershell.exe
. -
Создайте новый ключ с помощью команды
ssh-keygen
. Выполните команду:$ ssh-keygen -t rsa -b 2048
После выполнения команды вам будет предложено указать имена файлов, в которые будут сохранены ключи и ввести пароль для закрытого ключа. По умолчанию используется имя id_rsa
, ключи создаются в директории C:\Users\<имя_пользователя>\.ssh\
.
Публичная часть ключа будет сохранена в файле с названием <имя_ключа>.pub
. Скопируйте строку ключа в поле для публичного ключа при создании новой виртуальной машины через консоль управления.
Создание ключей для Windows будет выполняться с помощью приложения PuTTY.
-
Скачайте и установите PuTTY.
-
Убедитесь, что директория, куда вы установили PuTTY, присутствует в
PATH
:- Нажмите правой кнопкой на Мой компьютер. Выберите пункт Свойства.
- В открывшемся окне выберите Дополнительные параметры системы, затем Переменные среды (находится в нижней части окна).
- В разделе Системные переменные найдите
PATH
и нажмите Изменить. - В поле Значение переменной допишите путь к директории, куда вы установили PuTTY.
-
Запустите приложение PuTTYgen.
-
В качестве типа генерируемой пары выберите RSA и укажите длину
2048
. Нажмите Generate и поводите курсором в поле выше до тех пор, пока не закончится создание ключа. -
В поле Key passphrase введите надежный пароль. Повторно введите его в поле ниже.
-
Нажмите кнопку Save private key и сохраните закрытый ключ. Никогда его никому не передавайте и не говорите никому ключевую фразу от него.
-
Сохраните ключ в текстовом файле. Для этого скопируйте открытый ключ из текстового поля в текстовый файл с названием
id_rsa.pub
. Обратите внимание, что ключ должен быть записан одной строкой (не должно быть переносов и разрывов строки). -
При создании виртуальной машины через консоль управления укажите публичный ключ. Для этого откройте файл
id_rsa.pub
с помощью Notepad и скопируйте значение ключа в поле SSH-ключ.
Подключение к виртуальной машине
Вы можете подключиться к виртуальной машине по протоколу SSH, когда она будет запущена (в статусе RUNNING
). Для этого можно использовать утилиту ssh
в Linux/macOS/Windows 10 и программу PuTTY для Windows 7/8.
Для подключения необходимо указать публичный адрес виртуальной машины. Публичный IP-адрес можно узнать в консоли управления в поле Публичный IPv4 блока Сеть на странице виртуальной машины. Если вы создали машину только с внутренним адресом, для доступа через интернет нужно создать новую машину с публичным адресом.
Также можно использовать внутренние IP-адреса и FQDN для установки SSH-соединения между виртуальными машинами внутри одной облачной сети Yandex.Cloud.
В терминале выполните команду:
ssh <имя_пользователя>@<публичный_IP-адрес_виртуальной_машины>
Если у вас несколько закрытых ключей, укажите нужный:
ssh -i <путь_к_ключу/имя_файла_ключа> <имя_пользователя>@<публичный_IP-адрес_виртуальной_машины>
При первом подключении к машине появится предупреждение о неизвестном хосте:
The authenticity of host '130.193.40.101 (130.193.40.101)' can't be established.
ECDSA key fingerprint is SHA256:PoaSwqxRc8g6iOXtiH7ayGHpSN0MXwUfWHkGgpLELJ8.
Are you sure you want to continue connecting (yes/no)?
Введите в терминале слово yes
и нажмите Enter
.
В командной строке выполните команду:
ssh <имя_пользователя>@<публичный_IP-адрес_виртуальной_машины>
Если у вас несколько закрытых ключей, укажите нужный:
ssh -i <путь_к_ключу\имя_файла_ключа> <имя_пользователя>@<публичный_IP-адрес_виртуальной_машины>
При первом подключении к машине появится предупреждение о неизвестном хосте:
The authenticity of host '130.193.40.101 (130.193.40.101)' can't be established.
ECDSA key fingerprint is SHA256:PoaSwqxRc8g6iOXtiH7ayGHpSN0MXwUfWHkGgpLELJ8.
Are you sure you want to continue connecting (yes/no)?
Введите в командной строке yes
и нажмите Enter
.
В Windows соединение устанавливается с помощью приложения PuTTY.
- Запустите приложение Pageant.
- Нажмите правой кнопкой мыши на значок Pageant на панели задач.
- В контекстном меню выберите пункт Add key.
- Выберите сгенерированный PuTTY приватный ключ в формате
.ppk
. Если для ключа задан пароль, введите его.
- Запустите приложение PuTTY.
-
В поле Host Name (or IP address) введите публичный IP-адрес виртуальной машины, к которой вы хотите подключиться. Укажите порт
22
и тип соединения SSH. -
Откройте в дереве слева пункт Connection - SSH - Auth.
-
Установите флаг Allow agent forwarding.
-
В поле Private key file for authentication выберите файл с приватным ключом.
-
Вернитесь в меню Sessions. В поле Saved sessions введите любое название для сессии и нажмите кнопку Save. Настройки сессии сохранятся под указанным именем. Вы сможете использовать этот профиль сессии для подключения с помощью Pageant.
-
Нажмите кнопку Open. Если вы подключаетесь к машине в первый раз, может появиться предупреждение о неизвестном хосте:
Нажмите кнопку Да. Откроется окно терминала с предложением ввести логин пользователя, от имени которого устанавливается соединение. Введите имя пользователя, которое вы указали при создании виртуальной машины и нажмите
Enter
. Если все настроено верно, будет установлено соединение с сервером.
-
Если вы сохранили профиль сессии в PuTTY, в дальнейшем для установки соединения можно использовать Pageant:
- Нажмите правой кнопкой мыши на значок pageant на панели задач.
- Выберите пункт меню Saved sessions.
- В списке сохраненных сессий выберите нужную сессию.
Добавление SSH-ключей для других пользователей
Вы можете добавить SSH-ключи для другого пользователя виртуальной машины. Для этого нужно создать нового пользователя и добавить для него файл с авторизованными ключами.
-
Зайдите на виртуальную машину под именем пользователя, которого вы указали при создании виртуальной машины в консоли управления. Если виртуальная машина создавалась через CLI, то пользователь по умолчанию
yc-user
.Примечание
Получить информацию о виртуальной машине вместе с пользовательскими метаданными можно с помощью команды:
$ yc compute instance get --full <имя-виртуальной-машины>
-
Создайте нового пользователя и укажите для него оболочку
bash
для использования по умолчанию:$ sudo useradd -m -d /home/testuser -s /bin/bash testuser
-
Переключитесь на созданного пользователя:
$ sudo su - testuser
-
Создайте папку
.ssh
в домашней директории нового пользователя:$ mkdir .ssh
-
Создайте в папке
.ssh
файлauthorized_keys
:$ touch .ssh/authorized_keys
-
Добавьте в файл
authorized_keys
публичный ключ нового пользователя:$ echo "<публичный_ключ>" > /home/testuser/.ssh/authorized_keys
-
Измените права доступа к файлу
authorized_keys
и каталогу.ssh
:$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys
-
Отключитесь от виртуальной машины командой
exit
. -
Перезапустите виртуальную машину.
-
Проверьте подключение для нового пользователя:
$ ssh testuser@<публичный-IP-адрес-ВМ>