![更新:已修复,但不确定为什么会发生这种情况](https://linux22.com/image/1558060/%E6%9B%B4%E6%96%B0%EF%BC%9A%E5%B7%B2%E4%BF%AE%E5%A4%8D%EF%BC%8C%E4%BD%86%E4%B8%8D%E7%A1%AE%E5%AE%9A%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E5%8F%91%E7%94%9F%E8%BF%99%E7%A7%8D%E6%83%85%E5%86%B5.png)
背景
我有一个通过 ras 密钥设置了 SSH 访问的服务器。不允许密码访问。
一切运行正常。我的用户(我将其称为 USER1)和 root 可以使用各自的密钥登录。
可能导致问题的变化
昨天我按照说明对服务器做了一些更改在本文中,以便授予新用户 (USER2) 对一个文件夹 (Web 根目录) 的有限访问权限。我还遵循了本文。
总结一下这些更改,我创建了一个新用户 (USER2),并将bindfs
Web 根目录 ( /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 访问会导致什么后果?