如果您计划在 chroot 中运行 SSH 服务器的唯一原因是将密码身份验证限制为某些用户,那么您不需要这样做:您可以告诉 sshd 只允许白名单用户使用密码。在 中/etc/ssh/sshd_config,使用Match指令:
PasswordAuthentication No
Match User trusted_user_1,trusted_user_2
PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)
如果您确实想要 chroot 某些用户,您仍然可以运行单个 ssh 守护程序,并使用ChrootDirectory指令 in sshd_config(在Match指令范围内)。
您可以让两个 ssh 守护进程监听同一个端口,如果它们监听不同的地址。把ListenAddress每个指令/etc/ssh/sshd_config,每个希望该服务器监听的IP地址(ES)(听上,而不是听来,即这些都是你的服务器的网络接口地址)。这适用性有限,仅当您的服务器计算机是执行 LAN/WAN 过滤的节点时。这也意味着诸如此类的事情ssh localhost不会透明(您仍然可以使用 访问未在 localhost 上侦听的守护程序ssh -b)。
您可以在chroot的ssh守护进程监听不同的端口,与Port指令中/etc/ssh/sshd_config。继续从防火墙外部阻止端口 22,不要阻止您为 chroot sshd 选择的其他端口。
如果你有两个守护进程监听不同的端口(如上),你仍然可以给人一种他们都在监听端口 22 的错觉。例如,让 chrooted ssh 守护进程监听端口 2201,并重定向来自端口 22 的流量eth1到端口 2201:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j REDIRECT --to-ports 2201
Run Code Online (Sandbox Code Playgroud)
然后从 localhost 或通过 eth0 到端口 22 的 ssh 连接将到达非 chrooted 服务器,而通过 eth1 到端口 22 的 ssh 连接将到达 chrooted 服务器。端口 2201 上的连接将到达 chroot 服务器。您可以使用除 之外的其他条件-i eth,例如! -s 10.1.0.0/16 ! -s 127.0.0.0/8将所有内容与除 10.1.xy 或环回之外的源地址进行匹配。
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |