我不确定这种类型的活动是否有特定的名称,但无论如何:
当用户通过 ssh 进入 machine1 时,是否有某种方法可以强制他们自动通过 ssh 进入 machine2?
例如,如果用户 Bob 通过 ssh 进入了服务器 1,您是否可以在服务器 1 上进行设置,以便 Bob 成功登录后,会自动通过 ssh 进入服务器 2,这样他就只能访问服务器 2,而无法在服务器 1 上执行任何操作?此外,当他退出时,系统会断开他与服务器 2 以及服务器 1 的连接。
这有道理吗?这可能吗?
答案1
这里真正的要求是 Bob 需要 ssh 访问 machine2,但因为位于防火墙后面而无法直接访问它吗?如果是这样,最干净的解决方案可能是将 server1 上的端口转发到 server2 上的 ssh 端口 (22),您可以使用 iptables 执行此操作,请参阅http://www.debian-administration.org/articles/73.然后用户可以
ssh -p <port number> server1
进入服务器2。
如果您确实想强制登录到 server1 的用户直接进入 server2,那么可以将 server1 上相关用户的 shell 设置为运行“ssh server2”的脚本,但是用户最终将不得不输入两次密码(如果您使用密码)- 一次用于 server1,另一次用于 server2 - 并且您还需要小心锁定 server1 上的 SSH 服务器,以防止用户通过它进行端口转发等(无论您的 shell 设置为何,您都可以通过 SSH 访问执行此操作)。
答案2
将其添加到 bob 主目录中的 .ssh/authorized_keys 文件中:
command="ssh host2" ...bob's key here...
这称为“强制命令”。Google 可以为您提供更多信息。
答案3
要执行您想要的操作,您应该编辑用户的 .bash_profile,以便通过 ssh 进入服务器 2,然后以下行发出退出命令。一旦他的 ssh 会话结束,配置文件将启动“退出”命令并注销他。