SSH_ORIGINAL_COMMAND 变量未设置

dtg*_*dtg 10 freebsd ssh jail ssh-keys

我正在使用两台服务器,都运行 FreeBSD 8.4-RELEASE-p1 和 OpenSSH_6.1p1。ssh_config位于 中的两个服务器的文件/etc/ssh是相同的。两台服务器都配置为允许用户使用 SSH 远程进入被监禁的环境。

作为测试,我使用以下命令在两台服务器上使用 SSH 密钥登录到测试用户的监狱:

ssh -i ~/.ssh/private_key test-user@server.mydomain.com hello
Run Code Online (Sandbox Code Playgroud)

并且这authorized_keys两种情况下的文件都指定了以下要在身份验证后运行的命令,附加到公钥(两台服务器上的权限相同):

command="~/test.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Run Code Online (Sandbox Code Playgroud)

其中test.sh只需执行以下操作:

#!/bin/sh

echo SSH_ORIGINAL_COMMAND = $SSH_ORIGINAL_COMMAND
Run Code Online (Sandbox Code Playgroud)

在一台服务器上,上述sh脚本的输出显示如下:

SSH_ORIGINAL_COMMAND = hello
Run Code Online (Sandbox Code Playgroud)

但是在另一台服务器上,结果似乎没有存储在 SSH_ORIGINAL_COMMAND 中

SSH_ORIGINAL_COMMAND = 
Run Code Online (Sandbox Code Playgroud)

每个用户 jail 的相应服务器的行为是相同的。我的问题是 -SSH_ORIGINAL_COMMAND在第二台服务器的情况下,我还需要什么其他配置来允许在身份验证后设置变量?

小智 1

查看 /etc/profile 和其他初始化脚本(~/.bashrc 等) - 这些是设置环境变量的一些内容。

请记住,如果您希望它们设置的环境设置“粘住”,则需要用“.”代替脚本。