configurations/linux/ssh.md

5.5 KiB
Raw Blame History

Настройка SSH

Сервер

Файл кофигурации /etc/ssh/sshd_config

Базовая настройка

  • Port (22) - порт, через который происходит подключение
  • PermitRootLogin (yes|no) - подключение с использованием root-доступа
  • PubkeyAuthentication (yes|no) - подключение с использованием ключа
  • PasswordAuthentication (yes|no) - подключение с использованием пароля
  • PermitEmptyPasswords (yes|no) - подключение с использованием пустого пароля

Настройка файлов хранения публичных ключей:

Создание каталога в домашней директории пользователя (/home/user/.ssh), от которого будет происходить подключение к серверу:

mkdir ~/.ssh
chmod 700 ~/.ssh

Создание файла файла хранения публичных ключей:

touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Перезагрузка сервера SSH

Перезагрузка сервера SSH в Ubuntu

sudo systemctl restart sshd

В других дистрибутивах:

sudo service sshd restart
sudo /etc/init.d/sshd restart

Клиент

Подключение к серверу

Стандартное подключение:

ssh user@host

например, по умолчанию, через 22 порт:

ssh alexander@192.168.56.150

или с другим портом:

ssh -p 2222 alexander@192.168.56.150

или с использованием ключа ~/.ssh/mykey:

ssh -i ~/.ssh/mykey alexander@192.168.56.150

Создание ключа

Ключи SSH используют алгоритмы:

  • 🚨 DSA - это небезопасно и даже больше не поддерживается начиная с версии 7 OpenSSH.
  • ⚠️ RSA - зависит от размера ключа. Если он имеет длину 3072 или 4096 бит, то все хорошо. 1024-битная длина считается небезопасной.
  • CD ECDSA - зависит от того, насколько хорошо компьютер может генерировать случайное число, которое будет использоваться для создания подписи. Существует также проблема достоверности на кривых NIST, которые используются ECDSA.
  • Ed25519 - самый рекомендуемый алгоритм с открытым ключом, доступный сегодня.

Создание ключей выполняется через утилиту ssh-keygen. По умолчанию создаётся пара 2048-битных ключей RSA:

ssh-keygen

или

ssh-keygen -t rsa

Самый рекомендуемый способ создания ключа:

ssh-keygen -t ed25519

Использование дополнительных полей при создании пары ключей SSH RSA:

ssh-keygen -t rsa -b 4096 -C "alexander@zhirov.website" -f ~/.ssh/mykey -N password
  • -t rsa - тип создаваемого ключа
  • -b 4096 - количество битов в ключе
  • -C "alexander@zhirov.website" - комментарий, который будет добавлен в конец файла открытого ключа для идентификации
  • -f ~/.ssh/mykey - имя файла закрытого ключа. В том же каталоге будет создан соответствующий файл открытого ключа с .pub в имени
  • -N password - дополнительная парольная фраза, используемая для доступа к файлу закрытого ключа

Файл конфигурации серверов

Настройка файла конфигурации серверов ~/.ssh/config

Host myserver
    HostName 192.168.56.150
    User alexander
    Port 2222
    IdentityFile ~/.ssh/mykey
  • Host - имя к подключаемому серверу (произвольное название)
    • HostName - адрес сервера
    • User - имя пользователя, от которого происходит подключение
    • Port - порт, по которому происходит подключение
    • IdentityFile - файл ключа, если подключение происходит с использованием ключа SSH

Копирование ключа на сервер

После создания ключа ~/.ssh/mykey необходимо зарегистрировать (добавить) его публичную версию mykey.pub на подключаемый сервер с использованием ssh-copy-id:

ssh-copy-id -i ~/.ssh/mykey.pub user@host

Добавление ключа с использованием дополнительных опций:

ssh-copy-id -i ~/.ssh/mykey.pub -p 2222 alexander@192.168.56.150

Добавления ключа вручную:

cat ~/.ssh/mykey.pub | ssh -p 2222 alexander@192.168.56.150 "cat >> ~/.ssh/authorized_keys"