我有机器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 remote
or no
,而是至少设置为local
or yes
),则工作命令很简单:
ssh -J B C
在较旧的 ssh 版本上并且无需配置,您可以执行以下操作:
ssh -f -N -L 2222:C:22 B
ssh -p 2222 localhost
关键点是这样的:
-N 不执行远程命令。这对于转发
端口很有用。