Безопасное и удобное использование SSH
Настраиваем безопасный сервер
С самого начала мы правильно настроим сервер, конфиг которого обычно находится в файле /etc/ssh/sshd_config.
Одно из самых важных правил - отключить вход под root:
PermitRootLogin no
Следующий вариант для дополнительной безопасности - ограничение на вход определённым пользователям, например (перечисление через пробелы):
AllowUsers user1 user2 user3
Альтернативный вариант - ограничение по группам пользователей:
AllowGroups group1 group2 group3
Существуют так же антонимы AllowUsers, AllowGroups - DenyUsers, DenyGroups. если это необходимо.
Можно поменять порт с 22 на какой-нибудь нестандартный:
Port 6622
Следующим немаловажным шагом является запрет входа по паролю и включение возможности входа по ключам:
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
Настраиваем клиент
Для создания ключей на стороне клиента используется утилита ssh-keygen
. Она создаст связку из открытого и закрытого ключа. Весьма рекомендуется при создании ключей указать пароль, чтобы в случае утери/кражи вашего закрытого ключа третье лицо не воспользовалось им.
Связка ключей находится в каталоге ~/.ssh, где id_rsa - ваш закрытый ключ, с которым вы не должны ни с кем делиться и копия которого у вас должна где-то быть, id_rsa.pub - ваш публичный ключ, который необходимо добавить на сервер для входа.
Копируется (хотя как правило - дописывается) он на сервер в файл ~/.ssh/authorized_keys того пользователя под которым должен осуществляться вход. Но лучше использовать утилиту ssh-copy-id, чтобы случайно не затереть чужие открытые ключи и не напортачить с правами доступа. Используется она следующим образом:
$ ssh-copy-id user@host
Где user - имя пользователя для которого должен осуществляться вход, а host - адрес ssh-сервера.
Теперь проверьте вход по ключу и если всё хорошо (если нет - не выполняйте следующую команду!), то есть пароль либо не требуется (если вы его не задавали при создании ключа), либо пароль тот что вы ставили на ключ, то перезапустите ssh-сервер, чтобы применились новые настройки:
$ sudo /etc/init.d/ssh restart
Если вы указывали нестандартный порт, то может быть неудобно каждый раз вводить это всё руками, поэтому можно на клиенте создать файл ~/.ssh/config и вписать в него следующее:
Host host1
Port 6622
HostName example.com
User user1
Теперь можно входить по на сервер по алиасу без имени пользователя и порта:
$ ssh host1
Либо копировать файлы:
$ scp file1 host1:~/
Чтобы не вводить каждый раз пароль от закрытого ключа необходимо воспользоваться функционалом ssh-agent, то есть логинясь в систему достаточно выполнить:
$ ssh-add
Ввести один раз пароль после чего все сервера на которые организован вход по ключу ввод пароля требоваться более не будет (как правило до завершения X-сессии, но можно настроить под свои требования).