LINUX.ORG.RU

SSH авторизация по ключу

 , , ,


0

2

Всем привет. Проблема такая -

Настроил SSH авторизацию по ключу. Под root прекрасно заходит по приватному ключу.

Но вот другой пользователь зайти не может. Допустим пользователь forssh. В его папке есть папка .ssh, в этой папке есть authorized_keys

права выставлены нормально

chmod go-w ~/		
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Однако, происходит какая то дичь, потому что в логе явно видно, что пытается читаться рутовский файл ключей, что естественно не получается.

Sep 28 12:38:46 mail sshd[29602]: debug1: trying public key file /root/.ssh/authorized_keys
Sep 28 12:38:46 mail sshd[29602]: debug1: Could not open authorized keys '/root/.ssh/authorized_keys': Permission denied

В конфиге sshd

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile<---->~/.ssh/authorized_keys

Почему пользователь forssh не может авторизоваться через ключ?

Вангую у тебя в /etc/ssh/sshd_config указано читать только ключи из рута.

Для хомяка каждого юзера должно быть нечто вроде:

AuthorizedKeysFile  %h/.ssh/authorized_keys

entefeed ☆☆☆ ()
Ответ на: комментарий от entefeed

Чего? Какого хомяка, ты наркоман?)

В итоге для пользователя forssh что должно быть?

AuthorizedKeysFile /home/forssh/.ssh/authorized_keys AuthorizedKeysFile %р/.ssh/authorized_keys

Это не работает. Рут работает даже если я закоменчу эту строку. Но оно и понятно, т.к. по умолчанию читается рутовский файл.

GexogenSG1 ()
Ответ на: комментарий от GexogenSG1

Чего? Какого хомяка, ты наркоман?)

Хомяк это директория /home/forssh у тебя, в общем случае /home/username, а у меня например мой хомяк это /home/mandala

Покажи чтоль целиком /etc/ssh/sshd_config

mandala ★★★★ ()
Ответ на: комментарий от mandala
Port 6666
HostKey /etc/ssh/ssh_host_rsa_key
SyslogFacility AUTHPRIV
LogLevel DEBUG3
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
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

+ #AuthorizedKeysFile<--->~/.ssh/authorized_keys

GexogenSG1 ()
Ответ на: комментарий от GexogenSG1

Что то с последней строкой, вот так должно быть

Port 6666
HostKey /etc/ssh/ssh_host_rsa_key
SyslogFacility AUTHPRIV
LogLevel DEBUG3
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
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
AuthorizedKeysFile ~/.ssh/authorized_keys

Перезапустить демон sshd от рута, пробовать залогиниться юзером.

mandala ★★★★ ()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от mandala

AuthorizedKeysFile
After expansion, AuthorizedKeysFile is taken to be an absolute path or one relative to the user's home directory.
The default is ".ssh/authorized_keys .ssh/authorized_keys2".

Я думаю дефолт трогать не надо, а указание ~ может привести к раскрытию в директорию из под кого запущен sshd - что и наблюдаем у ТСа.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от mandala

С последней строкой все впорядке, просто она была закоменчена, вот в раскоменченом варианте конфиг.

Port 6666
HostKey /etc/ssh/ssh_host_rsa_key
SyslogFacility AUTHPRIV
LogLevel DEBUG3
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile<---->~/.ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
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

GexogenSG1 ()
Ответ на: комментарий от Pinkbyte

.ssh/authorized_keys

Так не получается

~/.ssh/authorized_keys

Так тоже не работает

authorized_keys2

это уже другая часть той же оперы, которая нам не нужна

Например комментарии в конфиге по этому поводу (все символы стоят по умолчанию, ничего не изменено. В коментах нет ~, но в значении оно стояло)

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile<---->~/.ssh/authorized_keys

GexogenSG1 ()
Ответ на: комментарий от GexogenSG1

Версию openssh и дистрибутив в студию. Вообще складывается ощущение что рестарт сервиса у тебя не происходит - иначе объяснить неприменение конфига мне сложно

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte
[root@mail .ssh]# cat /etc/*release*
CentOS Linux release 7.5.1804 (Core)
Derived from Red Hat Enterprise Linux 7.5 (Source)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

CentOS Linux release 7.5.1804 (Core)
CentOS Linux release 7.5.1804 (Core)
cpe:/o:centos:centos:7

openssh-7.4p1-16.el7.x86_64

GexogenSG1 ()
Ответ на: комментарий от GexogenSG1

Вот рабочий конфиг с ни фига не настроеного сервера, только ключи включены (удалил все закоменченное)

AuthorizedKeysFile	.ssh/authorized_keys
Subsystem	sftp	/usr/libexec/sftp-server
PermitRootLogin yes
mandala ★★★★ ()
Ответ на: комментарий от Pinkbyte

Проблема решилась. В итоге ты был прав, нужно было без тильды писать. однако, копировал я файл с директории рута командой CP. Скопировалось лишь ПОЛОВИНА ключа XD то есть он тупо обрезан был в файле. Хз почему так, это загадка какая то. Спасибо всем за помощь =)

GexogenSG1 ()
Ответ на: комментарий от Deleted

Да ноупроблем, я просто коротко и неясно выразился сначала, а так то ты прав: права это больная тема с ssh и они первые на ум приходят. Если бы не тот давний спор где мы целым тредом обменивались рабочими правами я бы думал как и ты.

mandala ★★★★ ()
Ответ на: комментарий от mandala

Бывает )

Фига себе, бывает. Фиг ведь догадаешься...

Я вот столкнулся после обновления системы, что мой древний ключ ssh-dss теперь не нравится, надо вручную добавлять PubkeyAcceptedKeyTypes=+ssh-dss (но там и в логах сообщение было другое). Вот это хоть в Инете найти можно и «бывает».

vodz ★★★★ ()
Ответ на: комментарий от vodz

Фиг ведь догадаешься...

У меня типо так было, только еще хуже: в конфиг попали непечатные символы. Конфиг был как щас помню от жабирсервера. Я самый лютый дебаг включал чтоб понять где трабла.

mandala ★★★★ ()