SSH, server refused our key. (Решено).

Писал заметочку о CentOS на VPS дошёл до ssh авторизации по ключу. и нормально так встрял аж на две недели)), забегая вперёд скажу, что ошибка была наивная и от того досадной)), но было интересно!

Ну-с, начнём по-порядку расписывать картину моего позора))

  1. Сгенерировал ключики в путти-ген

putty-gen1 putty-gen2 putty-gen3

  1. публичный закинул в хом

pscp

  1. настройки sshd_config

вытягиваем sshd_config

pscp-dl

рассматриваем то, что есть. Оставляем то, что нужно.

# $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