Писал заметочку о CentOS на VPS дошёл до ssh авторизации по ключу. и нормально так встрял аж на две недели)), забегая вперёд скажу, что ошибка была наивная и от того досадной)), но было интересно!
Ну-с, начнём по-порядку расписывать картину моего позора))
- Сгенерировал ключики в путти-ген
- публичный закинул в хом
- настройки sshd_config
вытягиваем sshd_config
рассматриваем то, что есть. Оставляем то, что нужно.
# $OpenBSD: sshd_config,v 1.90 2013/05/16 04:09:14 dtucker Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/local/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # Port 2 AddressFamily inet Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key SyslogFacility AUTHPRIV PermitRootLogin yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes PermitEmptyPasswords no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes X11Forwarding no UsePrivilegeSeparation sandbox # Default for new installations. AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server AllowUsers root discipulus
4 смена порта
в секции Port пишем нестандартный порт (отобьёт немалую часть срача в логи на предмет неудачной авторизации армии ботов))
5 настройка iptables
не забиываем отметить изменение порта (я так пару раз переустанавливал системы)).
6 PubKeyAuthentication yes
явно указываем аутентификацию по ключу.
7 PasswordAuthentication yes
это отключаем в последнюю очередь
9 user — server refused our key
и вот на этом я встрял — ситуация такова: рут с ключами заходит — пользователь (группа wheel) по ключам не заходит, только по паролю.
Что я только не делал, все рецептики предлагаемые в рунете были вычитаны, осмыслены, применены и нифига)) рут — всё ок, юзер — болт.
Я потерял покой и сон.
Далее пара моментов, которые не помогли в решении, но показались интересными
10 AddressFamily
отключаем поддержку ipv6
[root@discipulus74 ssh]# netstat -tulpn | grep sshd tcp 0 0 0.0.0.0:2 0.0.0.0:* LISTEN 458/sshd tcp6 0 0 :::2 :::* LISTEN 458/sshd [root@discipulus74 ssh]# service sshd restart Redirecting to /bin/systemctl restart sshd.service [root@discipulus74 ssh]# netstat -tulpn | grep sshd tcp 0 0 0.0.0.0:2 0.0.0.0:* LISTEN 603/sshd [root@discipulus74 ssh]#
11 Очень занятная опция Match
И заодно настроил SFTP.
Проблема была в преднастроенном профиле PuTTY. Профиль для рута был настроен верно, с правильными путями к секурному ключу. А вот профиль пользователя был настроен с путями к старому ключу, не соответствующего паре публичного ключа на сервере)) вот такой я тормаз!
UPD — настройка PuTTY для нормального отображения псевдографики в консоли
Terminal > Keyboard > «The Function keys and keypad» = linux
Window > Translation > Character set — выставляем правильную кодировку
Connection > Data > «Terminal-type string» пишем linux