通过下一跃点的 SSH,用户在下一跃点上没有 shell

通过下一跃点的 SSH,用户在下一跃点上没有 shell

我有机器A、B和C。

用户在机器 A 上,想要通过机器 B ssh 到机器 C。用户在机器 A 和 C 上有 shell,但在机器 B 上有 /usr/sbin/nologin。是否可以通过 B ssh 到机器 C?

以下命令的结果是。

ssh -t B ssh C
This account is currently not available.

如果我使用 B 上具有 shell 的用户 ssh 到机器 C,则该命令有效。

答案1

读完后关联从patrix的评论中,我可以看出这仍然是可能的,如果ssh不尝试执行外壳程序。最近的一个特点是打开ssh7.3 被调用ProxyJump(并且只是一个内置的和优化的(使用管道)快捷方式,用于更长的时间ProxyCommand)。此功能仅在隧道级别起作用,并且不会在中间主机上执行 shell。

因此,如果在 B 上用户帐户登录被 shell 禁用nologin,但身份验证仍在工作,并且没有 ssh 配置阻止转发(即:AllowTcpForwarding不设置为 only remoteor no,而是至少设置为localor yes),则工作命令很简单:

ssh -J B C

在较旧的 ssh 版本上并且无需配置,您可以执行以下操作:

ssh -f -N -L 2222:C:22 B
ssh -p 2222 localhost

关键点是这样的:

-N 不执行远程命令。这对于转发
端口很有用。

相关内容