Фон
У меня настроен сервер с доступом по 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
файла. Хотя ни одно из них не было изменено моими действиями вчера, так что я просто повторно применил существующие разрешения.
Содержимое моего /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 с его ключом?