如何从远程 SSH 会话将数据发送到本地剪贴板

新手上路,请多包涵

Borderline ServerFault 问题,但我正在 编写 一些 shell 脚本,所以我先在这里尝试 :)

大多数 *nixes 都有一个命令,可以让您通过管道/重定向输出到本地剪贴板/粘贴板,并从中检索。在 OS X 上,这些命令是

pbcopy, pbpaste

无论如何,在通过 SSH 连接到另一台服务器时是否可以复制此功能?那是,

  1. 我正在使用计算机 A。
  2. 我打开一个终端窗口
  3. 我通过 SSH 连接到计算机 B
  4. 我在计算机 B 上运行命令
  5. 计算机 B 的输出被重定向或自动复制到计算机 A 的剪贴板。

是的,我知道我可以(不寒而栗)使用鼠标从命令中选择文本,但是我已经习惯了将输出直接传输到剪贴板的工作流程,我希望远程会话也可以使用相同的方法。

代码很有用,但一般方法也很受欢迎。

原文由 Alan Storm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 878
2 个回答

我正在复活这个线程,因为我一直在寻找相同的解决方案,并且我找到了一个适合我的解决方案。这是对 OSX Daily 建议的一个小修改。

就我而言,我在本地 OSX 机器上使用终端通过 SSH 连接到 linux 服务器。像 OP 一样,我希望能够仅使用键盘将少量文本从终端传输到本地剪贴板。

解决方案的本质:

 commandThatMakesOutput | ssh desktop pbcopy

当在远程计算机的 ssh 会话中运行时,此命令获取 commandThatMakesOutput 的输出(例如 ls、pwd)并将输出通过管道传输到本地计算机的剪贴板(“桌面”的名称或 IP)。换句话说,它使用嵌套的 ssh:您通过一个 ssh 会话连接到远程计算机,在那里执行命令,远程计算机通过不同的 ssh 会话连接到您的桌面并将文本放入剪贴板。

它需要将您的桌面配置为 ssh 服务器(我将其留给您和谷歌)。如果您设置了 ssh 密钥以促进快速 ssh 的使用,最好使用每会话密码或任何您的安全需求,这会容易得多。

其他示例:

 ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

为方便起见,我创建了一个 bash 文件来缩短管道后所需的文本:

 #!/bin/bash
ssh desktop pbcopy

就我而言,我使用的是一个特别命名的密钥

我用文件名 cb 保存它(我的助记符(剪贴板)。将脚本放在路径中的某个位置,使其可执行并瞧:

 ls | cb

原文由 rhileighalmgren 发布,翻译遵循 CC BY-SA 3.0 许可协议

我最喜欢的方式是 ssh [remote-machine] "cat log.txt" | xclip -selection c 。当您不想(或不能)从远程 ssh 到本地时,这是最有用的。

编辑:在 Cygwin ssh [remote-machine] "cat log.txt" > /dev/clipboard 上。

编辑:来自 nbren12 的有用评论:

几乎总是可以使用 SSH 端口转发设置反向 ssh 连接。只需在本地 .ssh/config 的服务器条目中添加 RemoteForward 127.0.0.1:2222 127.0.0.1:22 --- ,然后在远程机器上执行 ssh -p 2222 127.0.0.1 ,然后将连接重定向到本地机器。 – nbren12

原文由 Dominykas Mostauskis 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题