如何在 SSH 会话中在本地机器上发出命令?

如何在 SSH 会话中在本地机器上发出命令?

用例示例:

  1. 我正在使用运行 Mac OS X 的笔记本电脑(A)并登录到我的开发服务器()通过 SSH。
  2. 我有一个脚本,它将为我当前在编辑器中打开的文件/分支生成一个 GitHub URL()。
  3. 我想在笔记本电脑的浏览器中打开该 URL(A)。

其他用例可能包括:

  • 每次保存文件时刷新浏览器
  • 当我发出git 命令
  • 打开与我已检出的分支对应的 Jira 票。

答案1

您可以使用 SSH 反向隧道。它的工作原理如下;在您使用的机器上执行此操作,remote_server这是远程服务器的名称:

ssh -R 13000:localhost:22 remote_server

并在您的图像中local machine显示remote server

ssh <USERNAME>@localhost -p 13000 "DISPLAY=:0 ristretto <IMAGE>"

编辑:Mac OS 机器上可能没有安装 X 服务器,我不使用它,但总体思路是一样的。使用反向隧道的优点是您的本地机器不必具有公共 IP 地址。

答案2

这可能不是解决这个问题的最优雅的方法,但是——因为你使用的是 Mac OS X——如果你已经远程控制另一台机器,我能想到的唯一办法就是像这样向你的主机发出 SSH 命令。最大的先决条件是你需要在 Mac OS X 笔记本电脑上启动并运行 SSH 服务器,并确保路由器的防火墙规则允许在端口 22 上建立 SSH 连接,这样才能正常工作。

因此,我们假设您的笔记本电脑已命名machineA,并且您想http://google.com从远程计算机打开类似以下 URL()那么你只需在机器上发出这个 SSH 命令

ssh username@machineA 'open http://google.com'

这将启动一个连接到您本地机器的 SSH,并运行命令,open http://google.com该命令将打开一个浏览器窗口(基于您的默认浏览器),该命令将转到传递给它的 URL http://google.com;。

相关内容