Вход по ключам в SSH

На абонентной машине, откуда собираемся коннектиться к SSH серверу:

cd ~/.ssh

ssh-keygen -t rsa -b 2048

На все вопросы отвечаем Enter-ом, тем наиболее создавая пару ключей, без passfrase (пароля, который будет требоваться при активации ключа). Когда вам к ключу (Ключ — информация, служащая для разгадки, решения, понимания чего-нибудь, овладения чем-нибудь: тайны, шифра, местности) еще необходим и пароль, то его также можно указать в момент его запроса.

В результате в директории .ssh появляются 2 файла:

id_rsa — приватный ключ, держать в секрете! а лучше на закодированном томе

id_rsa.pub — публичный ключ, необходимо будет положить на сервер

На всю папку .ssh ставим права — только чтение пользователю. Т.е.

Читайте также:  Все о ядре ОС Linux

chmod 700 ./.ssh

chmod 600 ./.ssh/id_rsa

Общественный ключ — на сервер

После создания пары ключей, приватный — остается у юзера в секрете, а публичный необходимо положить в домашнюю директорию пользователя, в файл ~/.ssh/authorized_keys

На ssh сервере:

cat ./user.pub >> /home/user/.ssh/authorized_keys

chown -R user /home/user/.ssh

chmod 700 /home/user/.ssh/

chmod 600 /home/user/.ssh/authorized_keys

Вдобавок убедитесь что на сервере разрешена авторизация по ключу, для этого в файле /etc/ssh/sshd_config обязаны быть строки:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

Если наш пользователь станет совсем без пароля, то для этого нужно в файле /etc/shadow заменить хеш пользовательского пароля на знак *. Пример (cat /etc/shadow) :

user:*:13783:0:99999:7:::

А если на сервере вообще хотим запретить активизацию по паролям, выставляем параметр в /etc/ssh/sshd_config:

Читайте также:  Как в Linux изменить права доступа к файлу?

PasswordAuthentication no

PermitEmptyPasswords no

Проверка

На абонентной машине запускаем:

ssh -v user@host

должно пропустить без запросов. Если что не так — смотрим на сервере лог /var/log/auth.log