1

Фон

У меня есть сервер с SSH-доступом через ras-ключи. Доступ к паролю не разрешен.

Работало нормально. Мой пользователь (я назову это USER1) и пользователь root могут войти в систему с соответствующими ключами.

ИЗМЕНЕНИЯ, КОТОРЫЕ ПОТЕНЦИАЛЬНО ВЫЗЫВАЛИ ПРОБЛЕМУ

Вчера я сделал несколько изменений на сервере, следуя инструкциям в этой статье, чтобы предоставить новому пользователю (USER2) ограниченный доступ к одной папке (веб-корню). Я также следовал инструкциям в этой статье.

Чтобы суммировать эти изменения, я создал нового пользователя (USER2) и сделал bindfs веб-корня (/home/user1/sites/domain/public/) к /home/user2/domain/public/). В соответствии с этими статьями было сделано несколько других вещей, но, насколько я могу судить, ни одна из них не повлияла на разрешения и доступ по SSH для USER1. Поэтому я не буду пытаться повторить их все здесь.

Согласно одной из этих статей, я также добавил следующее в sshd_config :

subsystem sftp internal-sftp
Match User USER2
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp

Насколько я могу судить, это единственное, что изменилось с тех пор, как я последний раз смог войти в систему с помощью USER1.

ВОПРОС

После внесения вышеупомянутых изменений я не смог войти на следующий день (сегодня). Я получаю ошибку, Permission denied (publickey). ,

Я следовал все стандартные рекомендации , чтобы установить правильные права доступа и владельца для / домашней папке ~/home/USER1/.ssh и ~/home/USER1/.ssh/authorized_keys файл USER1. Хотя ни одно из них не было изменено моими действиями вчера, так что я просто применял существующие разрешения.

Содержимое моего файла /etc/ssh/sshd_config :

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes

AuthorizedKeysFile  %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
UsePAM yes
Subsystem sftp /usr/lib/openssh/sftp-server

Match User USER2
PasswordAuthentication yes
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp

AuthorizedKeysFile %h/.ssh/authorized_keys был закомментирован. Я раскомментировал это, пытаясь решить эту проблему.

Я в недоумении относительно того, что мешает моему пользователю USER1 иметь доступ по SSH на основе ключей. Если есть какая-либо дополнительная информация, которая будет полезна, пожалуйста, дайте мне знать.

ОБНОВЛЕНИЕ: удалось исправить это, но не уверен, почему это произошло

Дважды проверив, что все разрешения были правильными, и что в файле sshd-config не было ничего странного, я установил ssh, чтобы разрешить вход в систему с паролем, а затем повторно скопировал мой файл id_rsa.pub (используя ssh-copy-id) на сервер.

Это восстановило мой доступ для USER1 с ключом.

Я не совсем понимаю, почему возникла эта проблема, и я планирую использовать инструкции в этих статьях на дополнительных серверах (поскольку это оказалось очень полезным способом предоставления разработчику (например) строгого доступа SFTP (только) к веб-сайт, и есть разрешение на внесение изменений в файл. Поэтому, если у кого-то есть время указать на ошибку в инструкции, сделайте это.

Чтобы избавить вас от прочтения этих статей, вот несколько шагов, которые я предпринял:

mkdir -p /home/user2/websites/application1
chown -Rf user2:user2 /home/user2/websites
chmod -Rf 770 /home/user2/websites

Добавьте следующее в /etc/fstab

bindfs#/home/user1/websites/domain/public /home/user2/websites/application1 fuse force-user=user2,force-group=user2,create-for-user=user1,create-for-group=user1,create-with-perms=0770,chgrp-ignore,chown-ignore,chmod-ignore 0 0

chown user1:user1 /home/user1/websites/domain/public
chmod 770 /home/user1/websites/domain/public

Создан новый пользователь:

sudo useradd -d /home/user2/website/application1 user2
sudo passwd user2

Добавлен в sshd-config

subsystem sftp internal-sftp
Match User user2
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp

Затем sudo service ssh restart

ВОПРОС

Итак, мой измененный вопрос заключается в том, что на вышеприведенных шагах вызвало бы у user1 доступ по ssh со своим ключом?

0