边界服务器故障问题,但我正在编程一些shell脚本,所以我先在这里尝试:)

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

pbcopy, pbpaste 

当SSHed到另一个服务器时,是否有办法复制此功能?也就是说,

我用的是电脑A。 我打开一个终端窗口 我SSH到计算机B 我在计算机B上运行一个命令 计算机B的输出被重定向或自动复制到计算机A的剪贴板。

是的,我知道我可以(战栗)用鼠标从命令中选择文本,但我已经习惯了直接将输出输出到剪贴板的工作流程,所以我希望远程会话也能这样。

代码很有用,但通用方法也很有用。


当前回答

ssh服务器反向隧道端口

所有现有的解决方案要么需要:

客户端上的X11(如果有的话,服务器上的xclip效果很好)或 客户端和服务器在同一个网络中(如果你在工作时试图访问你的家用电脑,情况就不同了)。

这里有另一种方法,不过您需要修改ssh登录计算机的方式。

我已经开始使用这个,它远没有看起来那么吓人,所以试一试。

客户端(ssh会话启动)

ssh username@server.com -R 2000:localhost:2000

(提示:使此为键绑定,这样您就不必键入它)

客户端(另一个选项卡)

nc -l 2000 | pbcopy

注意:如果你没有pbcopy,那么就把它tee到一个文件。

服务器(SSH会话内部)

cat some_useful_content.txt | nc localhost 2000

其他的笔记

实际上,即使您在ssh会话中间,也有一种方法可以启动隧道,但我不想把人们吓跑,因为实际上并没有看起来那么糟糕。但如果有人感兴趣的话,我会稍后再补充细节

其他回答

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

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

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

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

发现了一个很好的解决方案,不需要反向ssh连接!

您可以在远程主机上使用xclip,同时在OSX系统上使用ssh X11转发和XQuartz。

设置方法:

安装XQuartz(我用solist + pivotal_workstation:: XQuartz recipe做了这个,但你不必这样做) 运行XQuartz.app 打开XQuartz首选项(+,) 确保选中“启用同步”和“当剪贴板发生变化时更新剪贴板” ssh -X remote-host "echo 'hello from remote-host' | xclip -select剪贴板"

最简单的解决方案,如果你在OS X上使用Terminal,并且你已经在远程服务器上ssh了,并且希望获取文本文件或日志或csv的结果,简单地:

1) Cmd-K清除终端输出

2) cat <filename>显示文件的内容

3) Cmd-S保存“终端输出”

你需要手动删除文件的第一行和最后一行,但这种方法比依赖其他要安装的包、“反向隧道”和尝试使用静态IP等要简单一些。

如果你在Kubernetes集群中的pod上工作,而不是直接使用SSH,所以你没有办法进行文件传输,你可以使用cat,然后将终端输出保存为文本。例如,在macOS中,您可以执行Shell ->导出为文本。

如果在Mac上使用iTerm2,有一种更简单的方法。该功能通过it2copy命令内置到iTerm2的Shell集成功能中:

Usage: it2copy
          Copies to clipboard from standard input
       it2copy filename
          Copies to clipboard from file

要使其工作,请在登录到远程主机时选择iTerm2—>Install Shell Integration菜单项,将其安装到您自己的帐户中。完成此操作后,您就可以访问it2copy以及其他一些别名命令,这些命令提供了很酷的功能。

这里的其他解决方案都是很好的变通方法,但相比之下,这个解决方案非常简单。