授权密钥通常放在 HOME 目录中的 .ssh 下。
我想把它放在一个非标准的地方,比如/etc/AK/authorized_keys.archemar
我使用匹配规则设置 sshd_config
Match user archemar
ChrootDirectory /exploit/X25
AuthorizedKeysFile /etc/AK/authorized_keys.%u
PasswordAuthentication no
ForceCommand internal-sftp -u 0002
PubkeyAuthentication yes
但是没有密码无法登录,sshd 报错。
sshd[] Failed publickey for archemar from ... port 41154 ssh2: RSA SHA256:...
命令是sftp
或者ssh
sftp -i archemar archemar@localhost
ssh -i archemar -l archemar localhost
当authorized_keys位于通常位置时,公钥可以正常工作。
文件授权是
-rw-r--r-- 1 root root 802 Oct 24 10:51 authorized_keys.archemar
目录/etc/AK
是drwx------
我缺少什么?这是一个chroot
问题吗?
- 操作系统是Suse 12.4,
- 我确实将部分放在末尾
sshd_config
并重新启动, - selinux 被禁用。
答案1
您需要遵守 sshd 施加的权限的期望:
公钥所在的目录至少应该可供所有人执行。
chmod 711 /etc/AK chown root:root /etc/AK
公钥需要由其用户拥有,这些权限对我有用:
chown archemar:root /etc/AK/authorized_keys.archemar chmod 640 /etc/AK/authorized_keys.archemar