也许不是措辞最好的问题,但希望这是一个直截了当的问题。
该场景是从框 A 上的个人帐户通过 SSH 连接到框 B 上的通用帐户。框 B 上运行的脚本需要捕获个人帐户名称以进行日志记录。有什么方法可以捕获这个,无论是通过 SSH 本身还是通过 shell 捕获的一些信息?我们在 Solaris 上使用 ssh2(反射)和 KornShell(ksh)。
如果您完全控制客户端计算机,则可以部署 identd 来获取用户名。
从脚本中获取名称的完整过程:
您可能必须禁用权限分离才能按原样工作;然而,修改它以使其不工作应该是微不足道的。
您可以有一个标准,他们使用 ssh 的别名记录远程用户名作为登录过程的一部分,或者他们将用户名存储在 .ssh/environment 文件中(但允许设置环境可能需要 ssh/sshd 配置变化)。
alias sshblah='ssh blah "REMOTEUSER=$USER; bash' (除非那不起作用,而且我还没有试图找出原因 - 如果您使用 tcsh 等,情况会有所不同)。
您可以通过这种方式使用环境传递,并选择您允许设置的变量。您必须让用户为 $USER 设置一些替代项,例如 $REMOTE_USER=$USER,然后允许 $REMOTE_USER 通过。而且您相信他们不会错误地设置它,或者忘记设置它(您可以通过修改此机制来处理这种情况,但会有点烦恼)。
请注意,您几乎必须信任连接的客户端才能告诉您用户是谁 - 您可以使欺骗用户名变得困难/烦人,但除非您使用每用户证书而不是他们都知道的通用登录名/密码,否则您无法验证谁连接了。