我想使用密钥通过 ssh/scp 访问主目录。通常我会将 pub 密钥放入〜/ ssh /授权密钥但我想要
- 禁用添加或删除 ssh 密钥的功能(关闭 ~/ssh/authorized_keys)
- 用户不应该能够 rm -f pub_key,修改 pub_key 位于系统中的任何位置
- 使存储不同帐户的 pub 密钥的目录对于“普通”用户不可读,例如 /etc/sudoers.d/ 只能由 root1 读取
那可能吗?我该怎么做?
答案1
您想要实现两件事:
禁止使用身份验证
~/.ssh/authorized_keys
按照建议设置
AuthorizedKeysFile
到一些不同的地方。如果有讨论的需求,则不会进行评估(否则无事可解决)。放
AuthorizedKeysCommand
该命令将从您自己选择的位置返回授权密钥。
例如:
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
AuthorizedKeysCommand /usr/sbin/get_user_keys
AuthorizedKeysCommandUser dedicated_user
你的脚本/usr/sbin/get_user_keys
可能如下所示:
#!/bin/sh
cat /etc/ssh/%u/authorized_keys
这基本上使密钥只读并解决您的问题。
答案2
您可以做一件事而无需编辑系统配置文件来获得您想要的大部分内容。您只需~user/.ssh/authorized_keys
像平常一样使用其余所有内容,并使它们不可变。
您可以将~user/.ssh
目录设置为不可变,这样可以防止移动或删除它,如果您不希望他们.ssh
使用自己的内容创建新目录,这一点很重要。它还可以防止添加、移动或删除其中的文件。
您可以将各种文件(例如~user/.ssh/authorized_keys
或~user/.ssh/id_rsa.pub
)设置为不可变,以防止移动或删除它们。它还可以防止编辑它们。
请注意,不可变的目录和文件以这种方式受到保护甚至反对他们的主人。它们甚至以这种方式受到root
用户的保护,直到root
消除不变性。
在将目录和文件设置为不可变之前,请确保正确设置目录和文件的权限以保护隐私,因为不可变性甚至会阻止这种情况。
你设置了一些不可变的东西,如下所示:
sudo chattr +i [directory path|file path]
一个特别方便的命令可以.ssh
一次性保护其中的所有文件(如果有子目录,则递归保护):
sudo chattr -R +i ~user/.ssh
要关闭不变性以更改某些内容(确保完成后将其重新打开):
sudo chattr -i [directory path|file path]
请注意,能够编辑您想要的任何内容的快速方法是:
sudo chattr -R -i ~user/.ssh