小编Joh*_*esR的帖子

ssh 中类似 Bash 的命令替换或如何从 ssh *client* 请求东西?

在 bash(和其他 shell)中,可以使用 $() 和 ``(反引号)之类的东西将命令的结果插入到命令行中。

现在,如果您有类似的东西,但对于 ssh 会话,那就太好了。因此,您处于 ssh 会话中,需要来自您自己计算机的一些信息,并希望将其放入您所连接计算机的内部命令行中。

例如,假设您想直接访问 mysql 控制台。你可以使用这样的命令:

ssh user@example.com "mysql -u blub -pmypass"
Run Code Online (Sandbox Code Playgroud)

这可行,但问题是,您可以在 ssh shell 进程的命令行中看到密码。

为了解决这个安全问题,我想要这样的东西:

ssh user@example.com "mysql -u blub -p\$(ssh-on-client 'cat pass-file')"
Run Code Online (Sandbox Code Playgroud)

它将cat passfile在 ssh 客户端而不是服务器上执行。有这样的事情吗?你有什么其他技巧可以做到这一点吗?

更新:我感谢参考我的例子的答案,但除非他们回答真正的问题,否则我不会接受它们。也就是说,是否可以从 ssh 会话内与 ssh 客户端计算机进行通信。(我知道这可能构成一个可能的安全问题)

可能的解决方案:

  • 在客户端上有一个 ssh 服务器可以连接回。(sweimann) 问题是如何获取连接回服务器的凭据。
  • 使用 ssh 创建隧道并使用一些 netcat 脚本/telnet 在服务器上执行命令并将结果发回。
  • 使用 expect 编写 shell 脚本。(扎克·汤普森)
  • 在客户端上使用围绕 ssh 的自定义包装器观察控制台并相应地采取行动。(札幌)
  • 修补 SSH 以支持这一点。邮件列表上有类似的补丁可用
  • ssh有一个选项“SendEnv”,用于在远程计算机上设置环境变量。不过,这必须在远程 sshd 上启用。

ssh shell bash

1
推荐指数
1
解决办法
5983
查看次数

标签 统计

bash ×1

shell ×1

ssh ×1