我们的一个 ssh 服务器充当跳转主机。用户只能继续访问某些目标主机。这可以通过以下方式实现iptables,但目前这不是理想的解决方案。
我检查了man ssh_config
是否可以在系统范围内配置这种情况ssh_config
,但没有找到任何提示。
除了 iptables 之外,还有其他想法可以实现这一点吗?
答案1
向目标添加有效路由,向 null 添加更通用的路由。然后,只有定义的目标路由才可供用户使用。问题是这对所有用户都可用
答案2
你可以使用类似这样的东西
#! /bin/sh
MSG='********************************
1 = host1
2 = anotherhost
3 = host3
0 = exit
********************************'
host=none
while test none = "$host"
do
echo "$MSG"
echo -n 'your choice: '
read choice
case "$choice" in
1) host=host1.domain.com;;
2) host=anotherhost.xy.de;;
3) host=just.go.here;;
0) exit;;
esac
done
ssh $host
作为 jumphost 上 ssh 用户的登录 shell。如果您将其保存为 /usr/bin/ssh-choice,请不要忘记将 /usr/bin/ssh-choice 添加到 /etc/shells。
汤姆汤姆汤姆
答案3
我不太清楚该如何设置,但也许禁用跳转主机上的 shell 登录,只允许特定用户将端口转发到特定主机,然后执行 openssh 的 -J 选项 (ProxyJump) 可以解决这个问题?sshd_config 的 Match 指令可能会有所帮助。
答案4
从主机的路由表中删除除跳转主机之外的所有内容,或者将阻止连接的防火墙放在主机本身以外的其他地方。