更新:已修复,但不确定为什么会发生这种情况

更新:已修复,但不确定为什么会发生这种情况

背景

我有一个通过 ras 密钥设置了 SSH 访问的服务器。不允许密码访问。

一切运行正常。我的用户(我将其称为 USER1)和 root 可以使用各自的密钥登录。

可能导致问题的变化

昨天我按照说明对服务器做了一些更改在本文中,以便授予新用户 (USER2) 对一个文件夹 (Web 根目录) 的有限访问权限。我还遵循了本文

总结一下这些更改,我创建了一个新用户 (USER2),并将bindfsWeb 根目录 ( /home/user1/sites/domain/public/) 更改为/home/user2/domain/public/。根据那些文章,还做了一些其他事情,但据我所知,这些事情都不会影响 USER1 的权限和 SSH 访问。所以我不会在这里重复所有这些。

根据其中一篇文章,我还在文件中添加了以下内容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 访问会导致什么后果?

相关内容