2013-01-02 83 views

回答

5

除非您使用something like this answer - 即将用户名作为连接的一部分推送,否则不记录原始系统的用户名。远程主机编码在SSH_CLIENT环境变量中,因此可以确定。

您可以尝试使用finger远程系统,但这需要fingerd才能运行,但这些日子并不常见。

你会使用特定的按键对于用户来说,它可以在authorized_keys文件的密钥,如environment="NAME=value"的起点设置为一种-的判定连接远程用户选项有更好的运气。例如

environment="REMOTEUSER=fred" ssh-rsa <blahblahkey> <comment> 

如果你有在sshd的配置PermitUserEnvironment一套使用在关键的environment选项只会工作,否则在authorized_keys行被忽略,你会被提示输入密码。

+0

谢谢皮特。我尝试了你的提示。 SSH_CLIENT变量已设置,但不幸的是,由于我们通过通用代理进行了隧道传输,因此该变量无用。 手指也因防火墙阻挡而无法使用。 环境=“NAME =价值” - 看起来像系统管理员不允许我们的服务器...从我读的,它默认情况下禁用?当我尝试时,无密码登录停止,并且系统提示输入密码,因此看起来像服务器不这样。 – Rop

+0

是的,如果在服务器上没有设置PermitUserEnvironment,则该键被忽略(被拒绝,因为它是无效的)。唯一的另一个愚蠢的选择是使用'command =“env REMOTE = user/bin/bash',但这只是一个琐碎的选项,因为它会阻止非交互式脚本。听起来好像你有一个难以解决的问题,作为代理隐藏起始IP地址,并且ssh默认情况下不要求远程用户名。 – Petesh

+0

作为一种解决方法,原则上看起来像这样的东西可以工作:ssh user @ server'/ bin/bash - rcfile .customrc -l -i';然后它会在登录时执行与.bashrc不同的文件,在那里我可以进行自定义设置,但它不完美...在登录时,我感到恼人的味精“bash:无法设置终端进程组(-1):无效的参数; bash:在这个shell中没有作业控制“。另外,当我在bash中键入ctrl-C时,它会终止整个bash会话,然后退出到客户端(我从windows/cygwin运行ssh)。修复这些问题? – Rop