确定通过 SSH 登录的用户的远程机器的帐户名

确定通过 SSH 登录的用户的远程机器的帐户名

在我工作的公司,我们有一些共享帐户,任何人都可以通过 SSH 使用这些帐户执行特定任务。目前,我们有太多用户,每个用户都有自己的可用性优势,例如 shell 别名等。

我想要做的是允许用户根据~/.bash_profile实际登录的用户通过不同的 shell 设置。例如,当 Jonathan 登录时,我希望 shell 额外执行~/.Jonathan_profile,而对于 Bob,我希望 shell 源配置~/.Bob文件。

但是,我不确定是否有办法知道使用 SSH 登录的用户在远程机器上的帐户名。

如能提供任何提示我将不胜感激。

答案1

你无法知道客户正在使用什么账户,因为客户不会告诉你。但有这些事情你可以做:

  1. 创建单独的帐户,并让用户使用 sudo 访问共享帐户。这确实是首选选项,可为您提供最佳审计(始终记录谁做了什么),并且用户可以将他们想要的任何实用程序放入他们的帐户中。然而,这也是最繁重的工作。

  2. 仅使用公钥认证并使用以下语法从那里设置环境变量:

    environment="END_USER=whoever" ssh-rsa asdfasdfr...
    

    在 中.ssh/authorized_keys。然后你$END_USER在 中查看.profile。显然,你必须为用于登录的每个公钥设置它。

  3. 告诉每个人使用选项从客户端设置环境变量SendEnv(服务器必须有相应的AcceptEnv设置)。再次检查中的变量.profile

  4. 从变量中获取源 IP 和端口SSH_CONNECTION并用于ident获取实际的源用户;但identd必须在客户端上运行,而现在很少这样做,因为它不是很有用,但对于潜在的攻击者获取有关您的系统的一些信息很有用。

  5. 对于单个帐户内更复杂的自定义,始终可以编写自定义 shell 包装器并将其与command授权密钥中的属性一起使用。这也是一项相当繁重的工作,但它可用于实施几乎任何限制和审计,而无需创建单独的帐户。

注意:我当然建议只使用公钥并禁用密码。这样,如果您想取消某人的访问权限,只需删除他们的密钥即可。

相关内容