为 ssh 正确实现类似 REMOTE_USER 的功能

为 ssh 正确实现类似 REMOTE_USER 的功能

我想知道如何在我的服务器上的 ssh 会话中提供远程用户名。这样,当以joe@host1身份登录时,以身份运行的commonuser@server1脚本就会知道运行它们的人实际上是。server1commonuserjoe

  1. 我试过了SendEnv,但AcceptEnv没有成功。我甚至查看了 SSH 调试输出,看起来环境变量已经发送,但当我这样做时

    echo $REMOTE_USER

    我看到的是空字符串。

  2. 我还希望这个能够发挥作用,即使joe不太合作,例如当他拒绝设置变量时REMOTE_USER

答案1

如果您想将多个远程人员连接到同一个本地用户帐户,您应该使用 SSH 密钥并让每个用户使用自己的密钥。

这允许您识别用于登录的密钥(请参阅这个问题了解更多详情)。没有密钥,您根本无法识别远程用户。

如果您PermitUserEnvironment=yes在中设置/etc/ssh/sshd_config,那么您还可以在文件中强制使用环境变量,~/.ssh/authorized_keys如下所示:

cat ~/.ssh/authorized_keys

environment="REMOTE_USER=joe@remote1" ssh-dss AAAAB3Nza......

man sshd有关 authorized_keys 和 的更多信息,请参阅man sshd_config)。

相关内容