我想用 xsel 将一个长文件复制到剪贴板,在我的本地电脑中,只需输入:
cat /usr/bin/mysql_secure_installation|xsel -b
mysql_secure_installation
位于我本地操作系统中 的文件已复制到剪贴板。
现在使用 ssh 命令登录到我的 vps,然后输入
DISPLAY=:0 cat /usr/bin/mysql_secure_installation|xsel -b
我遇到错误信息:
xsel: Can't open display: (null)
: Inappropriate ioctl for device
我知道获取远程文件的正确方法是scp
命令:
scp -P port username@tohostname:/remotefile /newlocalfile
我只是想知道如何在登录我的 vps 后将文件内容复制到剪贴板,将文件从远程机器复制到本地计算机的剪贴板。
同样的错误:
DISPLAY=:0 xsel -b < /usr/bin/mysql_secure_installation
xsel: Can't open display: (null)
: Connection refused
开始你的
ssh
连接然后不要自己更改
DISPLAY
变量。ssh
应该自动设置它,以便xsel
(和任何其他 X11 客户端)可以使用本地计算机上的显示 - 包括它的剪贴板。这称为X11 转发。DISPLAY=:0
在您的ssh
会话中手动设置将告诉xsel
使用该远程服务器上的显示 - 如果一个甚至正在运行。正如贾尔斯勋爵在这里所说:
ssh -X
(每个会话,~/.ssh/config
始终使用它)X11Forwarding yes
(/etc/ssh/sshd_config
注意d
)。此外,默认情况下安装了一些包,如xauth
and 。libxdmcp6
记住要sudo systemctl restart sshd.service
更改才能生效。出于安全原因,我不会让它一直使用它,并且通常只在非常受信任的服务器上使用它。
其他来源
其他答案显示了如何转发您的 X 会话以实现所需的 O(结果)。但是,这不是很安全(正如已经指出的那样)或性能不佳,并且通常需要额外的设置。
在 SCROE 模型中实现相同 E(效果)的最佳方法是将原始数据字节流传输到主机并在本地将其推入剪贴板。你已经几乎拥有它了。你有一个管道,你有 scp,但 scp 几乎是正确的。
管道确保远程
cat
主机上命令的标准输出最终成为本地主机上命令的标准输入。(我还添加了一个; xsel 在明确指定操作模式时最安全。)xsel
-i