Исправление потери доступа по SSH с помощью ключа rsa

285
inspirednz

Фон

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

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

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

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

Чтобы суммировать эти изменения, я создал нового пользователя (USER2) и выполнил bindfsвеб-root ( /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 с его ключом?

1
Сам sshd предоставляет очень полезную информацию, если вы используете LogLevel DEBUG3. grawity 6 лет назад 0
Спасибо, мне было интересно, как получить больше полезной информации из журналов SSHD. Говорил мне почти ничего. inspirednz 6 лет назад 0

0 ответов на вопрос

Похожие вопросы