Назад | Перейти на главную страницу

разрешение ssh отклонено с удаленного хоста

Когда я отправляю ssh из своего ящика (Arch Linux) на удаленный ящик (сервер Fedora) с помощью ключа, он работает с одним пользователем (user1), но не с user2. Оба пользователя используют один и тот же ключ ssh: тот, что находится в домашней папке ssh user2. (/home/user2/.ssh/id_rsa с правильными режимами).

На удаленном хосте у обоих пользователей есть домашний каталог с одинаковыми ~/.ssh/authorized_keys файл.

РЕДАКТИРОВАТЬ

По запросу, некоторый файл конфигурации:

На удаленном хосте:

/etc/ssh/sshd_config

Port XXXX
Allowusers user1 user2
PermitRootLogin without-password
#PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
#HostbasedAuthentication no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes

$ journalctl -u sshd
Accepted publickey for user1 from XX.YY.XX.YY port XXXX ssh2: RSA SHA256:WT722lmf2CkXC8T6hGScDl+wZW71Ls3/U2W8FHh+vK4  <-- when connecting as user1
Connection closed by authenticating user user2 XX:YY:XX:YY port XXX [preauth]  <-- when connecting as user2

user2 (нерабочий) домашний каталог:

ls -la /home/user2
drwx------. 2 user2 user  4.0K Jan 31 19:18 .ssh/
 ls -la /home/user2/.ssh
-rw-------. 1 user2 user2   393 Jan 31 18:12 authorized_keys

Selinux включен на сервере (по умолчанию для Fedora). Обратите внимание, что user1 является существующим пользователем по умолчанию, когда сервер новый, а user2 был добавлен мной.

user1 (рабочий)

ls -Za /home/user1
 unconfined_u:object_r:ssh_home_t:s0 .ssh/ 
ls -Za /home/user1/.ssh
 unconfined_u:object_r:ssh_home_t:s0 ./  unconfined_u:object_r:user_home_dir_t:s0 ../       unconfined_u:object_r:ssh_home_t:s0 authorized_keys

user2 (не работает)

ls -Za /home/user2 
unconfined_u:object_r:unlabeled_t:s0 .ssh/
ls -Za /home/user2/.ssh
unconfined_u:object_r:unlabeled_t:s0 ./  unconfined_u:object_r:user_home_dir_t:s0 ../      unconfined_u:object_r:unlabeled_t:s0 authorized_keys

разница: r: без метки против г: ssh_home_

На локальной коробке:

user2@hortensia ➤➤ ~ % ls -al .ssh
-rw-------   1 user2 user2  1.8K Jan 16 18:19 id_rsa
-rw-------   1 user2 user2   396 Jan 16 18:19 id_rsa.pub
user2@hortensia ➤➤ ~ % ls -al
drwx------    2 user2 user2  4.0K Feb  1 08:06  .ssh/

Я не могу понять, почему ssh работает для user1, а не для user2. На удаленном хосте я остановился sshguard и iptables, но это ничего не меняет. В sshd_config очень простой, имеет линию Allowusers с user1 и user2 и разрешить соединение с ключом. При запуске ssh в подробном режиме я вижу разницу в сообщении при подключении user1 или user2.

user1

 $ ssh -vv -p XX user1@XX.YY.XX.YY
 ....................
 debug1: Next authentication method: publickey
 debug1: Offering public key: RSA SHA256:WT722lmf2CkXC8T6hGScDl+wZW71Ls3/U2W8FHh+vK4 /home/user2/.ssh/id_rsa
 debug2: we sent a publickey packet, wait for reply
 debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
 debug2:input_userauth_pk_ok:SHA256:WT722lmf2CkXC8T6hGScDl+wZW71Ls3/U2W8FHh+vK4                                                                                                                                                                                                                                                                    
 debug1: Authentication succeeded (publickey).
 Authenticated to XX.YY.XX.YY ([XX.YY.XX.YY]:XXXX).
 debug1: channel 0: new [client-session]
 debug2: channel 0: send open
 debug1: Requesting no-more-sessions@openssh.com
 debug1: Entering interactive session.
 debug1: pledge: network
 debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
 debug2: channel_input_open_confirmation: channel 0: callback start
 debug2: fd 3 setting TCP_NODELAY
 debug2: client_session2_setup: id 0
 debug2: channel 0: request pty-req confirm 1
 debug2: channel 0: request shell confirm 1
 debug2: channel_input_open_confirmation: channel 0: callback done
 debug2: channel 0: open confirm rwindow 0 rmax 32768
 debug2: channel_input_status_confirm: type 99 id 0
 debug2: PTY allocation request accepted on channel 0
 debug2: channel 0: rcvd adjust 2097152
 debug2: channel_input_status_confirm: type 99 id 0
 debug2: shell request accepted on channel 0
 Last login: Thu Feb  1 07:08:04 2018 from XX.YY.XX.YY
 [user1@dahlia ~]$

Теперь при подключении к user2

$ ssh -vv -p XX user2@XX.YY.XX.YY
...........
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:WT722lmf2CkXC8T6hGScDl+wZW71Ls3/U2W8FHh+vK4 /home/user2/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Trying private key: /home/user1/.ssh/id_dsa
debug1: Trying private key: /home/user1/.ssh/id_ecdsa
debug1: Trying private key: /home/user1/.ssh/id_ed25519
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
user2@XX.YY.XX.YY: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

По прошествии более одного дня я все еще не могу исправить эту ошибку. Спасибо за помощь / подсказки.

Ваш ls -l вывод показывает, что дополнительно к обычным разрешениям установлены контексты selinux:

ls -la /home/user2/.ssh
-rw-------. 1 user2 user2   393 Jan 31 18:12 authorized_keys
          ^ this dot indicates additional selinux contextes

Ваш ls -Z вывод показывает, что контекст типа вашего .ssh каталог и файлы в нем установлены на unlabeled_t:

ls -Za /home/user2/.ssh
unconfined_u:object_r:unlabeled_t:s0 ./

Этот контекст должен быть установлен на ssh_home_t так что sshd может его использовать.

Бегать

chcon -R -t ssh_home_t .ssh

чтобы установить контекст рекурсивно на .ssh каталог.