Быстрый тур по SSH

SSH, что расшифровывается как Secure Shell — это протокол, используемый для безопасного удаленного входа в систему и передачи файлов. Для защиты конфиденциальности и целостности данных, передаваемых между клиентом и сервером, он использует мощные методы симметричного шифрования и хэширования.

Эта статья посвящена использованию SSH для создания соединений с удаленными машинами на стороне любого облачного провайдера, например AWS или Azure. Для получения дополнительной информации о том, как работает SSH, пожалуйста, посмотрите статью Протокол SSH — безопасный удаленный вход и передача файлов.

Здесь я расскажу о трех основных способах подключения к любой удаленной машине;

  1. Использование закрытого ключа / пароля удаленной машины при каждом подключении.
  2. Добавление открытого ключа локальной машины в качестве authorized_keys на удаленной машине.
  3. Создание файла конфигурации на локальной машине в директории .ssh.

Каждый раз, когда мы создаем новую виртуальную машину на azure или экземпляр EC2 на AWS, у нас есть возможность записать SSH-ключ или задать имя пользователя и пароль для аутентификации.

1. Использование закрытого ключа / пароля удаленной машины при каждом подключении.

Это самый простой способ установления соединения с удаленной машиной; команды для этого следующие;

a. Аутентификация на основе пароля

ssh username@hostname 

Eg:

ssh prashant@1.1.1.1
Войти в полноэкранный режим Выйти из полноэкранного режима

Вам будет предложено ввести пароль, после ввода пароля соединение с удаленной машиной будет установлено.

b. Аутентификация на основе ключа SSH

  • Здесь предполагается, что у вас есть папка .ssh в домашнем каталоге.
  • Загрузите SSH-ключ для удаленной машины с соответствующей облачной платформы. Для Azure вам будет предложено загрузить ключ сразу после создания новой виртуальной машины. Пример файла ключа: NewVM_key.pem.
  • Поместите этот ключ в папку .ssh
  • Измените разрешение файла с помощью следующей команды

chmod 400 <Key File Name>

После выполнения этой настройки можно легко аутентифицироваться и создать сеанс SSH с помощью следующей команды

ssh username@hostname -i <location of key file>

Eg: ssh azureuser@1.1.1.1 -i ~/.ssh/NewVM_key.pem

Войти в полноэкранный режим Выйти из полноэкранного режима

Как только команда будет выполнена, соединение будет установлено, см. рисунок ниже

2. Добавление открытого ключа локальной машины в качестве authorized_keys на удаленной машине.

Еще один хороший метод подключения к удаленной машине — сохранить открытый ключ локальной машины (машины клиента) в authorized_keys сервера.

Как только это будет сделано, в следующий раз нам не нужно будет предоставлять SSH ключ сервера для подключения (как в методе 1). Как только мы запросим соединение с сервером, поскольку у сервера есть наш открытый ключ, он использует его для дальнейшей аутентификации.

Шаги по сохранению открытого ключа на сервере:

Сгенерируйте пару открытого и закрытого ключей на локальной машине (машине клиента). Используйте следующую команду;

ssh-keygen -m PEM -t rsa -b 4096

Detailed: 
ssh-keygen 
    -m PEM 
    -t rsa 
    -b 4096 
    -C "azureuser@myserver" 
    -f ~/.ssh/mykeys/myprivatekey 
    -N mypassphrase
Войти в полноэкранный режим Выйти из полноэкранного режима

Приведенная выше команда генерирует два файла id_rsa и id_rsa.pub, которые являются закрытым и открытым ключами машины клиента. Никуда не сообщайте свой закрытый ключ.
Теперь добавьте id_rsa.pub в качестве authorized_keys на сервере. Используйте следующую команду,

ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname
Войти в полноэкранный режим Выйти из полноэкранного режима

Чтобы добавить паблик вручную, используйте следующую команду

cat ~/.ssh/id_rsa.pub | ssh user@remote-host 'cat >> ~/.ssh/authorized_keys'
Войти в полноэкранный режим Выйти из полноэкранного режима

После успешного завершения вышеуказанных двух шагов можно подключиться к удаленному серверу, используя имя хоста и имя пользователя, без необходимости в пароле или SSH-ключе сервера.

Для наглядного представления вышеописанного процесса я подготовил соответствующее изображение;

3. Создание файла конфигурации на локальной машине в директории .ssh.

Третий способ сделать то же самое и, вероятно, самый эффективный и рекомендуемый способ — поддерживать файл конфигурации в директории .ssh.

Этот файл содержит информацию обо всех удаленных машинах, такую как хост, имя хоста, имя пользователя, пароль/shh ключ и т.д. Теперь мы можем подключиться к удаленному серверу только с помощью команды из двух слов: ssh и host.

Процедура создания файла конфигурации
a. Перейдите в каталог .ssh.
b. Теперь создайте файл конфигурации

touch config
Вход в полноэкранный режим Выйти из полноэкранного режима

c. Теперь откройте файл в вашем любимом редакторе, я буду использовать vim.

vim config
Войти в полноэкранный режим Выйдите из полноэкранного режима

d. Теперь введите информацию обо всех ваших удаленных машинах следующим образом

Host NewVM
   HostName 20.129.27.139
   User prashant

Host OldVM
   HostName 21.36.12.596
   User azureuser
   IdentifyFile ~/.ssh/OldVM_key.pem
Войти в полноэкранный режим Выйти из полноэкранного режима

Для получения дополнительной информации о файле config посмотрите эту прекрасную статью https://linuxize.com/post/using-the-ssh-config-file/.

Теперь, когда у нас есть наш файл конфигурации, мы можем войти в любую удаленную машину, просто используя host.

ssh NewVM

or

ssh OldVM
Вход в полноэкранный режим Выход из полноэкранного режима

На этом мы закончили третий и последний метод в этой статье. Надеюсь, вам понравилось читать и вы пополнили свои знания.
Пожалуйста, не стесняйтесь общаться в комментариях и дайте мне знать, если есть какие-либо ошибки или предложения.
Спасибо!

Cover Image Credits: https://askme4tech.com/how-use-ssh-powershell

Оцените статью
devanswers.ru
Добавить комментарий