![从我连接的内容获取 ssh 用户名机器](https://linux22.com/image/1591078/%E4%BB%8E%E6%88%91%E8%BF%9E%E6%8E%A5%E7%9A%84%E5%86%85%E5%AE%B9%E8%8E%B7%E5%8F%96%20ssh%20%E7%94%A8%E6%88%B7%E5%90%8D%E6%9C%BA%E5%99%A8.png)
您能从哪个用户 ssh 连接启动时获取远程机器上的用户名吗?
例如:
我使用登录名“john”连接到机器 1.1.1.1,然后我从该服务器登录到服务器 1.1.1.2,如下所示 -
[john] ~ ssh [email protected]
我可以在服务器 1.1.1.2 上获取用户名“john”吗?
如果我同时拥有第一和第二台服务器的 root 访问权限。我正在尝试查找可以通过 ssh 连接发送的变量,以发送用户名或类似这样的 smtl。
答案1
您可以使用 SSH(命令行参数或 SSH 配置)中的 SendEnv 选项导出环境值,以指定要复制到另一端的变量的名称:
ssh -o SendEnv=SOMEVAR servername
但接收端(这里是您的中间服务器)必须允许它们(AcceptEnv
在/etc/ssh/sshd_config
)(*)。当然,避免直接导出 $USER 或 $LOGNAME。
(*) 出于安全原因, 中的变量列表AcceptEnv
相当小,但在我的 Ubuntu 服务器上,它默认接受LANG
和LC_*
,因此即使您无法更改它,也可以通过定义/传递 LC_REMOTE_USER 变量来滥用它(即使是对语言环境敏感的代码也可能忽略它)。