Подключиться к виртуальной машине Linux по SSH
Рекомендуемый способ подключения к виртуальной машине по SSH основан на использовании пары ключей: открытый ключ размещается на ВМ, а закрытый ключ хранится у пользователя. Подключение с помощью пары ключей более безопасно, чем подключение по логину и паролю.
Создание пары ключей SSH
Чтобы подключаться к виртуальной машине по SSH, нужна пара ключей: открытый ключ размещается на виртуальной машине, а закрытый ключ хранится у пользователя. Такой способ более безопасен, чем подключение по логину и паролю.
Примечание
В публичных образах Linux, предоставляемых Yandex Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.
Чтобы создать пару ключей:
-
Откройте терминал.
-
Создайте новый ключ с помощью команды
ssh-keygen
:ssh-keygen -t ed25519
После выполнения команды вам будет предложено указать имена файлов, в которые будут сохранены ключи, и ввести пароль для закрытого ключа. Нажмите Enter, чтобы использовать имя по умолчанию
id_ed25519
. Пара ключей будет создана в директории~/.ssh
.Открытый ключ будет сохранен в файле
<имя_ключа>.pub
.
-
Запустите
cmd.exe
илиpowershell.exe
. -
Создайте новый ключ с помощью команды
ssh-keygen
. Выполните команду:ssh-keygen -t ed25519
После выполнения команды вам будет предложено указать имена файлов, в которые будут сохранены ключи, и ввести пароль для закрытого ключа. Нажмите Enter, чтобы использовать имя по умолчанию
id_ed25519
.Пара ключей будет создана в директории
C:\Users\<имя_пользователя>\.ssh\
илиC:\Users\<имя_пользователя>\
в зависимости от интерфейса командной строки.Открытый ключ будет сохранен в файле с названием
<имя_ключа>.pub
.
Создание ключей для Windows будет выполняться с помощью приложения PuTTY.
-
Скачайте и установите PuTTY.
-
Убедитесь, что директория, куда вы установили PuTTY, присутствует в
PATH
:- Нажмите правой кнопкой на Мой компьютер. Выберите пункт Свойства.
- В открывшемся окне выберите Дополнительные параметры системы, затем Переменные среды (находится в нижней части окна).
- В разделе Системные переменные найдите
PATH
и нажмите Изменить. - В поле Значение переменной допишите путь к директории, куда вы установили PuTTY.
-
Запустите приложение PuTTYgen.
-
В качестве типа генерируемой пары выберите Ed25519. Нажмите Generate и поводите курсором в поле выше до тех пор, пока не закончится создание ключа.
-
В поле Key passphrase введите надежный пароль. Повторно введите его в поле ниже.
-
Нажмите кнопку Save private key и сохраните закрытый ключ. Никогда его никому не передавайте и не говорите никому ключевую фразу от него.
-
Сохраните ключ в текстовом файле. Для этого скопируйте открытый ключ одной строкой из текстового поля в текстовый файл с названием
id_ed25519.pub
.
Важно
Надежно сохраните закрытый ключ: без него подключиться к ВМ будет невозможно.
Копирование публичного ключа в буфер обмена
Скопируйте ключ из файла <имя_ключа>.pub
с помощью любого текстового редактора, например Notepad. Обратите внимание, что ключ должен быть записан одной строкой (не должно быть переносов и разрывов строки).
Ключ можно скопировать и с помощью командной строки:
-
Запустите
cmd.exe
илиpowershell.exe
. -
Выведите на экран содержимое файла:
type C:\Users\<имя_пользователя>\.ssh\<имя_ключа>.pub
Где:
<имя_пользователя>
— название вашей учетной записи Windows, например,User
.<имя_ключа>
— название ключа, например,id_ed25519
илиid_rsa
.
Открытый ключ будет выведен на экран. Чтобы скопировать ключ, выделите его и нажмите правую кнопку мыши. Например:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5ABFLIFyapYheN7OZNhTaNqEHefjmU5mtzK7roNnfzL+gRPCz
. -
Можно сразу скопировать содержимое файла в буфер обмена:
type C:\Users\User\.ssh\id_ed25519.pub | clip
Вставьте открытый ключ в поле SSH-ключ при создании ВМ через консоль управления.
-
Запустите терминал.
-
Выведите на экран содержимое файла:
cat ~/.ssh/<имя_ключа>.pub
Где
<имя_ключа>
— название ключа, например,id_ed25519
илиid_rsa
.Открытый ключ будет выведен на экран. Выделите текст и скопируйте его в буфер обмена. Например:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5ABFLIFyapYheN7OZNhTaNqEHefjmU5mtzK7roNnfzL+gRPCz user@Desktop
. -
Можно сразу скопировать содержимое файла в буфер обмена:
cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
Вставьте открытый ключ в поле SSH-ключ при создании ВМ через консоль управления.
-
Запустите терминал.
-
Выведите на экран содержимое файла:
cat ~/.ssh/<имя_ключа>.pub
Где
<имя_ключа>
— название ключа, например,id_ed25519
илиid_rsa
.Открытый ключ будет выведен на экран. Выделите текст и скопируйте его в буфер обмена. Например:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5ABFLIFyapYheN7OZNhTaNqEHefjmU5mtzK7roNnfzL+gRPCz user@Desktop
. -
Можно сразу скопировать содержимое файла в буфер обмена:
cat ~/.ssh/id_ed25519.pub | pbcopy
Вставьте открытый ключ в поле SSH-ключ при создании ВМ через консоль управления.
Подключение к виртуальной машине
Вы можете подключиться к виртуальной машине в статусе RUNNING
по протоколу SSH. Для инициализации всех служб после запуска ВМ может потребоваться время. Если возникла ошибка соединения, попробуйте снова через несколько минут.
Для подключения можно использовать утилиту ssh
в Linux/macOS/Windows 10 и программу PuTTY для Windows 7/8.
Группы безопасности виртуальной машины должны разрешать входящий трафик по протоколу TCP на порт 22.
Примечание
Группы безопасности находятся на стадии Preview. Если они недоступны в вашей сети, для виртуальной машины будет разрешен весь входящий и исходящий трафик. Дополнительной настройки не требуется.
Чтобы включить группы безопасности, запросите в технической поддержке доступ к этой функции.
Для подключения необходимо указать публичный адрес виртуальной машины. Публичный 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.
Убедитесь, что учетная запись Windows обладает правами на чтение файлов в папке с ключами.
Для подключения к виртуальной машине в командной строке выполните команду:
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-адрес_виртуальной_машины>