四年后,这个答案值得更新。虽然最初我是用authorized_keys
自己的,在某些情况下可能仍会使用它,但是您也可以使用中央sshd_config
服务器配置文件。
sshd_config
您可以(针对您的特定用例)指定一个组,例如proxy-only
或Match
单个用户。在中sshd_config
。这是在全局设置并撤消,重复或优化全局设置中提供的某些设置之后完成的。
注意:sshd_config(5)
的man
页面中记录了其中使用的某些语法/指令ssh_config(5)
。特别要确保阅读的“ 模式”部分ssh_config(5)
。
对于一个组,这意味着您的Match
阻止将开始如下:
Match group proxy-only
您可以Match
在以下标准:User
,Group
,Host
,LocalAddress
,LocalPort
和Address
。要匹配多个条件,只需用逗号分隔条件-模式对(group proxy-only
如上)。
在这样的块内(为了简洁起见,通常会对其进行缩进(但不必这样做)),然后您可以声明要应用于用户组的设置,而不必编辑authorized_keys
该组成员的每个文件。
no-pty
来自的设置authorized_keys
将被设置反映,PermitTTY no
并command="/sbin/nologin"
变为ForceCommand /sbin/nologin
。
此外,您还可以设置更多设置来满足管理员的偏执狂,例如- chroot
将用户引导到其主文件夹中,并最终得到如下所示:
Match group proxy-only
PermitTTY no
ForceCommand /sbin/nologin
ChrootDirectory %h
# Optionally enable these by un-commenting the needed line
# AllowTcpForwarding no
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
(检查自己是否需要或是否需要注释掉的行和注释)
该%h
是用户的主目录取代(令牌%u
将产生的用户名和%%
百分号)。我发现ChrootDirectory
限制sftp-only
用户范围特别有用:
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
请注意,在块中只能使用某些指令Match
。查阅man
页面sshd_config(5)
以获取详细信息(搜索Match
)。
授权密钥
注意:这句话下面的部分是我的原始答案。同时-但它也取决于您确切sshd
版本的功能-在大多数情况下,我会采用上述方法。
是的,可以,您可以分配公钥。除了ajdecon推荐的nologin之外,我建议在以下项的键条目之前设置以下内容authorized_keys
:
no-pty ssh-rsa ...
no pty告诉服务器端,不应为该密钥分配任何伪终端。
您还可以通过以下方式强制执行特定密钥的nologin之类的操作:
command="/sbin/nologin",no-pty ssh-rsa ...
no-pty
仅此一项并不能阻止密钥用户执行命令。参见superuser.com/q/1230979/195460。