在通过SSH连接到Box B后,如何在Box A上捕获用户名?

时间:2009-05-20 14:40:21

标签: shell ssh scripting solaris ksh

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

该方案是从方框A上的个人帐户进行SSH连接到方框B上的通用帐户。方框B上运行的脚本需要捕获个人帐户名以进行日志记录。有没有办法通过SSH本身或shell捕获的一些信息来捕获它?我们在Solaris上使用ssh2(Reflections)和KornShell(ksh)。

2 个答案:

答案 0 :(得分:1)

如果您完全控制客户端计算机,则可以部署identd以获取用户名。

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

  1. 走上进程树,找到sshd
  2. 使用netstat -p查找远程IP和端口。
  3. 通过端口113连接到客户端并询问。
  4. 您可能必须禁用权限分离才能按原样运行;但是修改工作应该是微不足道的。

答案 1 :(得分:0)

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

    alias sshblah ='ssh blah“REMOTEUSER = $ USER; bash' (除非这不起作用,我没有试图找出原因 - 如果你使用tcsh等会有所不同。)

您可以使用this manner中的环境传递,并选择允许设置的变量。你必须让用户设置一些替代$ USER,比如$ REMOTE_USER = $ USER,然后允许$ REMOTE_USER通过。并且你相信他们不会错误地设置它,或者忘记设置它(你可以通过修改this mechanism来解决这个问题。)

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