Фон
У меня есть сервер с 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 со своим ключом?