我目前正在尝试设置一个用户组,该用户组可以通过 SSH 连接到服务器,但只能通过它进行代理。他们看不到任何文件或运行任何命令。该组中的用户还可以使用密码身份验证而不是密钥。 SSH 服务器是 OpenSSH。
这是另一个解决类似问题的问题有一个很好的答案。我无法完全理解他的意思,它特别指出不允许用户使用服务器作为代理,因此我不能盲目地遵循说明。与组相比,它也是为单个用户编写的。为了尝试解决这个问题,我对其配置进行了以下更改sshd_config
。
Match Group limited-users
AllowTcpForwarding yes
#X11Forwarding no
#PermitTunnel no
#GatewayPorts no
AllowAgentForwarding no
PermitOpen localhost:1080
ForceCommand echo 'This account can only be used for [reason]'
我怀疑我可能需要创建特定类型的系统组,但我不确定。
有没有一种首选方法可以创建这样的锁定帐户,而我只是想念它?
编辑:我有在 StackOverflow 上发现了第二个问题,也与这个问题非常相似但他们再次使用密钥,因为我想使用密码而不是密钥。
编辑2:事实证明这是一个非常受欢迎的事情。这个帮助最大。看来我需要简单地将用户的外壳设置为简单地按任意键注销,他们将无法执行任何操作。
编辑3:密切关注时本文由其他问题之一提供,我提出了以下内容,这几乎是相同的事情,但没有两个单独的组:
如果正确的话我会更新。
/usr/bin/tunnel_shell
我通过创建文件并将其放入其中,创建了一个似乎完全无用的外壳
#!/bin/bash
trap '' 2 20 24
clear
echo -e "rn33[32mSSH tunnel started, shell disabled by the system administrator"
while [ true ] ; do
sleep 1000
done
exit 0
我使用创建了一个名为tunnel_group的组
groupadd tunnel_group
我使用它添加了一个名为tunnel_user的用户。 -M 不给他主目录。 -Gtunnel_group 将他添加到tunnel_group(我之前创建的组)。 -s 将他的 shell 设置为我之前创建的tunnel_shell 文件。
useradd -M -G tunnel_group -s /usr/bin/tunnel_shell tunnel_user
然后我使用设置用户密码
passwd tunnel_user
我/etc/ssh/sshd_config/
已将其添加到文件末尾。
Match Group tunnel_group
AllowTcpForwarding yes
#X11Forwarding no
PermitTunnel yes
GatewayPorts yes
AllowAgentForwarding yes
PermitOpen localhost: 1080
ForceCommand echo 'This account can only be used for SOCKS and has be restricted accordingly.'