Вступление

Не буду описывать что такое SSH и зачем оно нужно. Эта статья из рубрики советов. В своё время я достаточно долго просидел в консоли Linux. И за этот период наработал привычки, которые могут оказаться полезными.

Добавляйте алиасы серверам

В подавляющем большинстве случаев подключение к серверу по SSH выполняется следующей командой:

$ ssh aukhatov@172.28.10.56

Выглядит довольно коротко и ясно. Всё бы ничего когда серверов один или два. Ситуация усложняется когда количество серверов увеличивается, надо по IP понимать что за сервер (или имени хоста это в лучшем случае).

А еще хуже когда учётные записи и порты для подключения на сервера отличаются. С точки зрения безопасности так даже предпочтительнее и в окружения типа PRED-PROD, PROD скорее всего так и будет.

Для таких случаев у SSH есть способ задать алиас на подключение:

~/.ssh/config

Host pg-db                  # алиас, лучше называть осмысленно у нас вымышленный Postgres DB
  User aukhatov             # пользователь от которого подключаемся
  HostName 172.28.10.56     # IP-адрес хоста для подключения или доменное имя
  Port 22                   # стандартный порт, можно не указывать

Теперь подключение к вымышленному серверу с Postgres DB осуществляется командой:

$ ssh pg-db

Используйте SSH ключи для аутентификации

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

Для таких случаев существует ассиметричное шифрование на базе открытых ключей. Неудивительно что SSH умеет так проводить аутентификацию.

Чтобы проходит аутентификацию по открытому ключу, необходимо выполнить команду:

$ ssh-copy-id pg-db

Эта встроенная в *nix утилита, которая копирует ваш открытый SSH ключ из ~/.ssh/id_rsa.pub и добавляет его в специальный .ssh/authorized_keys файл. Если вы поменяете ключ, то данное упражнение придётся проделывать заново.

После того как открытый ключ скопирован на удалённый сервер, то подключение осуществляется без пароля.

Тонкие моменты

Может быть такое, что у вас локально имеются разные пары ключей, и хочется подключаться на разные серваки по разным ключам. Такое тоже предусмотрено, для этого в ~/.ssh/config есть у Host есть параметр IdentifyFile

Host pg-db                                  # алиас, лучше называть осмысленно
  User aukhatov                             # пользователь от которого подключаемся
  HostName 172.28.10.56                     # IP-адрес хоста для подключения или доменное имя
  Port 22                                   # стандартный порт, можно не указывать
  IdentifyFile ~/.ssh/another_private_key   # путь к приватному ключу

Для не стандартной пары приватного и открытого ключа также можно выполнить команду ssh-copy-id, только уже с опцией -i и указанием открытого ключа

$ ssh-copy-id -i ~/.ssh/another_public_key pg-db

В конфигурация SSH сервера можно вообще отключить аутентификацию по паролю:

/etc/ssh/sshd_config

 PasswordAuthentication no

Это уже супер безопасный способ, только для продвинутых.