LiteCoding

Заметки о программировании

Настраиваем SSH-доступ по ключу

without comments

Все еще используете авторизацию по паролю? Тогда мы идем к вам.
Есть такой часто используемый способ обезопасить свой сервер от злоумышленников и порождения их злого гения (одним из примеров которых является gosh). Конечно, он не является панацеей, но поможет существенно снизить риски. Все нижеописанное верно для Debian Linux, в других дистрибутивах команды и имена файлов могут отличаться, но общий принцип сохраняется.

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

su user
ssh-keygen -t rsa

Тип ключа можно задать и dsa, а также задать размер ключа в битах опцией -b <bits>.
В домашнем каталоге пользователя появится директория .ssh с двумя файлами. Тот, который имеет расширение pub, переименовываем в authorized_keys, а другой передаем пользователю и удаляем из каталога.

2. Настройка сервера
В /etc/ssh/sshd_config (путь и имя конфигурационного файла могут отличаться) вносим следующие правки:

Protocol 2
PermitRootLogin no

(не обязательно в данном случае, но это правильное решение — получать права суперпользователя по sudo)

MaxAuthTries 1

(для ключа достаточно одной попытки)

MaxStartups 4

(количество одновременных попыток авторизации всех пользователей, ищется опытным путем)

UseDNS no

(тоже не обязательно, это чтобы при логине время авторизации не затягивалось на 20-40 секунд, особенно актуально для доступа к серверу по локальной сети или через VPN)

RSAAuthentication no

(тонкий момент, тут имеется в виду RSA1, запрещаем)

PubkeyAuthentication yes

(самая главная опция)

AuthorizedKeysFile %h/.ssh/authorized_keys

(оставить как есть, это пути к тем файлам, которые мы сгенерировали)

PasswordAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

Также неплохо ограничить доступ по принадлежности группе

AllowGroups developers

В принципе, все. Можно перезапустить демон ssh:

service ssh restart

3. Настройка доступа на клиенте
С Windows все довольно просто. Нужен putty и puttygen (скачивать тут). С помощью puttygen преобразовываем закрытый ключ в формат ppk и прописываем путь к нему в настройках соединения putty (connection->SSH->Auth).

С Linux все еще проще:

ssh user@server -p <порт> -i <путь_к_файлу_с_секретным_ключом>
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Tumblr

Written by Дмитрий Воробьев

Понедельник, Сентябрь 19th, 2011 at 13:12

Posted in Заметки

Tagged with ,

Leave a Reply

You must be logged in to post a comment.