Shell 在您登录到框B后,如何在框A上捕获您的用户名?

Shell 在您登录到框B后,如何在框A上捕获您的用户名?,shell,ssh,scripting,solaris,ksh,Shell,Ssh,Scripting,Solaris,Ksh,也许这不是一个措辞最好的问题,但希望这是一个直截了当的问题 场景是从框a上的个人帐户SSHing到框B上的通用帐户。框B上运行的脚本需要捕获个人帐户名以用于日志记录。是否有任何方法可以捕获此信息,或者通过SSH本身,或者通过shell捕获的某些信息?我们在Solaris上使用ssh2(反射)和KornShell(ksh)。 您无法可靠地记录远程用户名 您可以记录连接的IP(请参阅SSH\u connection变量) 您可以有一个标准,其中他们使用ssh别名记录远程用户名作为登录过程的一部分,或

也许这不是一个措辞最好的问题,但希望这是一个直截了当的问题

场景是从框a上的个人帐户SSHing到框B上的通用帐户。框B上运行的脚本需要捕获个人帐户名以用于日志记录。是否有任何方法可以捕获此信息,或者通过SSH本身,或者通过shell捕获的某些信息?我们在Solaris上使用ssh2(反射)和KornShell(ksh)。

  • 您无法可靠地记录远程用户名
  • 您可以记录连接的IP(请参阅SSH\u connection变量)
  • 您可以有一个标准,其中他们使用ssh别名记录远程用户名作为登录过程的一部分,或者他们将用户名存储在.ssh/environment文件中(但允许设置环境可能需要更改ssh/sshd配置)

    别名sshblah='ssh blah'REMOTEUSER=$USER;bash' (除了这不起作用,我还没有试图找出原因——如果你使用tcsh,情况会有所不同,等等)

您可以使用环境传递,并选择允许设置的变量。您必须让用户将一些备用设置为$USER,如$REMOTE\u USER=$USER,然后允许$REMOTE\u USER通过。您相信他们不会设置错误,或者忘记设置它(通过修改,您可以轻松处理该情况)


请注意,您几乎可以信任连接的客户端来告诉您用户是谁-您可以使欺骗用户名变得困难/恼人,但除非您使用每个用户的证书而不是他们都知道的通用登录/密码,否则您无法验证连接的用户。

如果您完全控制客户端机器,您可以loy ident以获取用户名

从脚本获取名称的完整过程:

  • 向上走流程树,找到sshd
  • 遍历netstat-p以查找远程IP和端口
  • 在端口113上连接到客户端并询问
  • 您可能必须禁用特权分离才能使其按原样工作;但是,在不使用它的情况下进行修改应该很简单