通过 SSH 将输入复制到剪贴板?

通过 SSH 将输入复制到剪贴板?

这是我的使用案例:

  • 我经常通过 SSH 连接到其他计算机进行工作,并且经常需要将文档/文本从服务器复制并粘贴到本地运行的编辑器以编写示例和共享文本。
  • 通常,如果文本足够小,我只需复制终端程序(目前为 gnome-terminal)的输出并粘贴即可。
  • 然而,当涉及到整个文档时,我的选择非常有限。我可以逐块复制文档,也可以将scp其复制到本地计算机。

有没有办法使用一个程序,例如xclip允许我将远程复制stdin到本地 X 服务器的剪贴板?一些效果:

cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard

会很棒的。有什么东西可以让这成为可能吗?

答案1

如果您运行带有 X 转发的 ssh,这是透明的:远程命令(包括xclip)可以访问您的 X 服务器(包括其键盘)。确保您和服务器ForwardX11 yes中都有(根据您的发行版,这些选项可能默认打开或关闭)。~/.ssh/configX11Forwarding yessshd_config

<myconffile.conf sed {...} | xclip -i

还有其他可能更方便的处理远程文件的方法,例如使用以下命令在本地计算机上安装远程目录SSHfs,或者在 Emacs 中打开远程文件流浪汉。如果你有 ssh 和保险丝设置并安装 SSHfs,SSHfs 就像mkdir ~/net/myserver; sshfs myserver:/ ~/net/myserver.如果您设置了 ssh 并安装了 Emacs,Tramp 就像打开 一样简单/myserver:/path/to/file

答案2

你不需要任何特别的东西;既然xclip工作结束了stdin,就

ssh remotehost xclip < myconf.conf

为什么需要修改它sedssh不作为终端时对数据透明,常用于管道,如

tar cfz - somedir | ssh remotehost 'cd destdir; tar xfz -'`

答案3

以下是您在本地计算机上在 OSX 上执行此操作的方法

ssh remotehost.com "<some/file.txt" | pbcopy

答案4

与 @d-raev 和 @william-casarin 的解决方案非常相似,但是,它是不同的,所以我分享对我有用的方法。

命令

ssh user@host "cat <myconffile.conf" | xclip -sel clip

解释

这用于ssh创建安全隧道,登录到user@hostip,然后执行cat打印 to 的内容,<myconffile.conf然后将其通过管道传输到本地计算机上的stdout命令,该命令将 的内容放入本地计算机上的剪贴板中。xclip -sel clip<myconffile.conf

真实世界的示例用法

我使用此命令结构来执行任务,例如在 Ubuntu 16.04 和 18.04 上使用 Bash 将 ssh 密钥粘贴到 github(运行命令后允许简单的 ctrl-V 或粘贴选择)。查看man sshman cat、 和man xclip了解行为和选项详细信息。

相关内容