技巧一:

技巧一:

假设我有以下 ssh 会话:

userA@boxA -> userB@boxB -> userC@boxC

现在,从boxC,作为userC,我希望获得 ssh 连接来自的信息,userB@boxB而该信息又来自userA@boxA

现在我有以下 ssh 会话以及第一个 ssh 会话:

userD@boxD -> userB@boxB

来自boxB,因为userB,我希望获得连接来自的信息userD@boxD,并且有第二个 ssh 会话来自userA@boxA

这些信息是否可供用户使用和访问?它是否完全可用?

如果没有,是否有任何“简单”的方法可以提供这些信息?简单是指无需破解和重新编译 sshd,也无需在机器上拥有 root 访问权限。

答案1

从客户端向服务器发送环境变量的官方方式是通过SendEnvAcceptEnv。问题是您需要在服务器上拥有 root 访问权限才能配置AcceptEnv。大多数服务器配置为不接受或仅接受少数预定变量。

我发现了两种从客户端向服务器发送环境变量的技巧,这两种技巧都不需要服务器上的 root 访问权限。

技巧一:

ssh -t server SSH_ORIGIN=$USERNAME@$HOSTNAME bash

这将连接到服务器,然后执行命令SSH_ORIGIN=$USERNAME@$HOSTNAME bash,在客户端用$USERNAME$HOSTNAME已经替换。然后,在服务器端,您可以进一步处理变量中包含的信息SSH_ORIGIN

-t需要的,否则 bash 将在没有 tty 的情况下在服务器上启动(尝试一下,你就会明白)。

稍加修改就能将信息沿着更长的 ssh 链传递。

ssh -t server SSH_ORIGIN=$USERNAME@$HOSTNAME:$SSH_ORIGIN bash

讨论:

  • bash 作为交互式非登录 shell 启动(.profile未读取)。
  • bash 运行两次(.bashrc读取两次)。一次由 sshd 执行,一次由用户命令执行。
  • 它将始终启动 bash,忽略服务器上的默认 shell。

技巧二:

首先,您必须生成一个 ssh 密钥并将其传输到~/.ssh/authorized_keys服务器上。然后在行前面添加command="$SHELL"。有关更多信息,请参阅 sshd 手册页。

使用以下命令连接到 ssh 服务器:

ssh -t server SSH_ORIGIN=$USERNAME@$HOSTNAME

这将连接到服务器,但这次不执行变量赋值。而是将字符串存储在环境变量中$SSH_ORIGINAL_COMMAND。然后执行中提供的命令~/.ssh/authorized_keys。一旦您进入 shell,您就可以处理中包含的信息$SSH_ORIGINAL_COMMAND

如上所述,您可以使其具有传递性:

ssh -t server SSH_ORIGIN=$USERNAME@$HOSTNAME:$SSH_ORIGIN

讨论:

  • 它将启动服务器上的默认 shell。
  • 它将始终启动服务器上的默认 shell。您提供给 ssh 命令的任何命令都将被忽略并存储在中$SSH_ORIGINAL_COMMAND。如果您想通过 ssh 执行命令,您可以使用不同的 ssh 密钥或让您的 shell 初始化文件来检测和执行$SSH_ORIGINAL_COMMAND

答案2

该命令who会告诉您现在还有谁登录在同一台计算机上以及他们从哪里登录。该命令last会提供过去会话的相同信息。根据计算机配置和登录方法,这些信息可能不完整、不最新或不可供非 root 用户使用。

在您的 A@A->B@B->C@C 场景中,机器 C 不可能知道 B@B 已从 A 通过 ssh 会话登录到 B。在 20 世纪 80 年代,当每个人都信任每个人时,您可以尝试fingerident,但如今机器 B 不太可能甚至运行 finger 或 ident 守护程序。

答案3

我认为您可以强制主机 B 上的环境变量写入主机 A 的地址。然后在主机 C 上使用 AcceptEnv 从主机 B 获取环境,瞧 :)

阅读一下 sshd_config,部分内容涉及环境内容。

答案4

从框 C,如果无法访问框 B,您将无法判断用户来自框 A。事实上,您可能无法判断用户如何到达框 C。这仅取决于管理员如何设置。

对于“进一步假设”的问题,答案相同。这取决于系统管理员授予您的权限以及他或她安装的程序。

如果您有权限(但您可能没有),相关命令将会对您有所帮助:

finger - http://www.manpagez.com/man/1/finger/

last - http://www.manpagez.com/man/1/last/

相关内容