SSH强制命令参数

SSH强制命令参数,ssh,ssh-keys,openssh,Ssh,Ssh Keys,Openssh,我正在尝试编写一个脚本,在成功登录ssh后验证用户权限 我是通过SSH强制命令来实现的。我希望传递脚本参数(例如它正在验证的用户),但我不确定如何传递 有什么帮助吗?SSH不允许通过参数传递密码(甚至不允许通过管道传递密码)。密码是经过设计的,甚至在man页面中有描述。通过ssh自动登录的唯一方法是通过文件身份验证 我认为您可以尝试将用户提供的密码与/etc/shadow中的值进行比较。这就应该做到了:)这是我自己想出来的。您可以通过设置环境变量并在强制命令脚本中读取参数来将参数传递给强制命令脚

我正在尝试编写一个脚本,在成功登录ssh后验证用户权限

我是通过SSH强制命令来实现的。我希望传递脚本参数(例如它正在验证的用户),但我不确定如何传递


有什么帮助吗?

SSH不允许通过参数传递密码(甚至不允许通过管道传递密码)。密码是经过设计的,甚至在
man
页面中有描述。通过ssh自动登录的唯一方法是通过文件身份验证


我认为您可以尝试将用户提供的密码与/etc/shadow中的值进行比较。这就应该做到了:)

这是我自己想出来的。您可以通过设置环境变量并在强制命令脚本中读取参数来将参数传递给强制命令脚本。

您可以在sshd配置文件中设置
ForcedCommand
,或者在相应用户的
授权密钥
文件中设置

ssh executes将环境变量ssh_ORIGINAL_命令设置为发送到服务器的完整命令行,然后执行
ForcedCommand

编写使用此环境变量提供参数的脚本具有安全隐患,因为攻击者可能会添加例如
;命令行末尾的rm-rf/
。然后首先运行
强制命令
,然后运行
rm-rf/

描述一个脚本,该脚本可用于一般锁定允许的命令行。它还包含相关信息的链接

机制如下:

  • 将脚本(仅)放置为
    ForcedCommand
  • 添加允许的“实”命令作为参数
  • 在相应用户帐户的主目录中添加规则文件(
    .onlyrules
    ),这将允许的参数限制为实际命令
  • 唯一的脚本读取SSH_ORIGINAL_命令,检查该命令是否a)允许(在参数列表中)b)在用户路径上,然后检查参数是否通过规则(在我们的示例中是简单的sed(1)脚本)

    示例设置:

    ForcedCommand /usr/local/bin/only ls
    
    授权密钥

    command="/usr/local/bin/only ls" ssh-rsa AAAA...
    
    。仅规则

    \:^ls /tmp$:{p;q}
    

    这只允许将命令
    ls/tmp
    发送到远程主机。

    我不一定要将密码作为参数传递,但我想知道如何或什么作为参数传递到强制命令脚本。有一个名为强制命令的ssh选项,您可以在ssh登录时强制它运行。这是什么“SSH强制命令”?您能告诉我们您试图使用的命令吗?调试看不到的代码非常困难。但您只能对设置为在SSH客户端和守护进程中传递和接受的环境变量执行此操作。