错误:使用 Xclip 复制 ssh 公钥时无法打开显示:(null)[关闭]

Posted

技术标签:

【中文标题】错误:使用 Xclip 复制 ssh 公钥时无法打开显示:(null)[关闭]【英文标题】:Error: Can't open display: (null) when using Xclip to copy ssh public key [closed] 【发布时间】:2013-09-12 19:21:11 【问题描述】:

我正在关注Generating SSH Keys,上面写着

sudo apt-get install xclip

下载并安装 xclip。如果您没有apt-get,您可能需要使用另一个安装程序(例如yum

xclip -sel clip < ~/.ssh/id_rsa.pub

将 id_rsa.pub 文件的内容复制到剪贴板

但是在我运行xclip -sel clip < ~/.ssh/id_rsa.pub 之后,我得到了Error: Can't open display: (null) 问题是什么?我用谷歌搜索了一下,但什么也没找到

【问题讨论】:

echo $DISPLAY 说什么? 什么都没有。我正在通过 ssh 在服务器上运行此命令 【参考方案1】:

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pub 对我不起作用 (ubuntu 14.04),但您可以使用:

cat ~/.ssh/id_rsa.pub

获取你的公钥

【讨论】:

这应该是任何试图通过 ssh 复制文件内容的人的第一选择 除非您尝试复制长文件。 @dval,我不同意它应该是第一答案,因为这个问题提到了xclip 的用法,而不仅仅是在带有cat ~/.ssh/id_rsa.pub 的 bash 中显示 SSH 密钥。但是,这有助于解决问题,因为您可以在值显示时复制它。 什么?!这如何解决 xclip 无法正常工作的问题? 其实这个答案是非常具有误导性的。【参考方案2】:

根据这个问题的日期,原始发帖人不会使用Windows Subsystem for Linux。但是,如果您是,并且遇到相同的错误,则以下替代方法有效:

clip.exe < ~/.ssh/id_rsa.pub

感谢 this page 指出 Windows 的 clip.exe(并且您必须键入“.exe”)可以从 bash shell 运行。

【讨论】:

你也可以使用管道cat ~/.ssh/id_rsa.pub | clip.ese 就可以了 @chriz 我想你的意思是“exe”而不是“ese”? 哦,是的,抱歉,这只是一个错字,它是cat ~/.ssh/id_rsa.pub | clip.exe。感谢您指出这一点。 @Moytaba CONTROL SHIFT V. 对于那些喜欢在所有平台上使用单个命令的人:将此添加到您的 ~/.bashrc~/.bash_profilealias pbcopy="clip.exe"。并感谢@chriz 指出管道| 工作得很好。【参考方案3】:

这是too good of an answer 不在这里发布。来自Gilles,来自 askubuntu 的用户:

剪贴板由X server 提供。没关系 服务器是否无头,重要的是您的本地 图形会话可用于远程运行的程序 机器。得益于 X 的网络透明设计,这是可能的。

我假设您使用 SSH 从 运行 Linux 的机器。确保同时启用 X11 转发 在客户端配置和服务器配置中。在里面 客户端配置,你需要有ForwardX11 yes这一行 ~/.ssh/config 默认启用它,或者将选项 -X 传递给 仅针对该会话的 ssh 命令。在服务器配置中, 你需要在X11Forwarding yes /etc/ssh/sshd_config(在 Ubuntu 上默认存在)。

要检查是否启用了 X11 转发,请查看 DISPLAY 环境变量:echo $DISPLAY。你应该看到一个 localhost:10 之类的值(在远程计算机上运行的应用程序 被告知连接到同一台机器上运行的显示器,但是 显示连接实际上是通过 SSH 转发到您的客户端 展示)。请注意,如果没有设置DISPLAY,则设置它是没有用的 手动:环境变量总是设置正确,如果 转发到位。如果您需要诊断 SSH 连接问题, 将选项 -vvv 传递给 ssh 以获取详细信息 正在发生。

如果您通过其他方式连接,您可能会也可能不会 能够实现X11转发。如果您的客户端运行的是 Windows, PuTTY 支持X11转发;您必须在 Windows 上运行 X 服务器 机器如Xming。

来自 askubuntu 的 Gilles

【讨论】:

【参考方案4】:

如果您尝试在远程主机上使用 xclip,只需将 -X 添加到您的 ssh 命令中

ssh user@host -X

更多详细信息可以在这里找到:https://askubuntu.com/a/305681

【讨论】:

【参考方案5】:

以下内容也适用于我:

ssh <user>@<host>  "cat <filepath>"|pbcopy 

【讨论】:

也可以使用 pem 文件: ssh -i /path/myapp.pem @ "cat " | pbcopy 我认为 pbcopy 是 mac 的东西,而不是 linux【参考方案6】:

已阅读您链接的文档。这完全是愚蠢的! xclip 只是一个剪贴板。您会找到其他方法来复制粘贴密钥...(我确定)


如果您不是在图形 X 会话中工作,则需要将 $DISPLAY 环境变量传递给命令。像这样运行它:

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pub

当然:0 取决于您使用的显示器。如果你有一台典型的台式机,它很可能是:0

【讨论】:

我收到Error: Can't open display: :0。顺便说一句,我正在通过 Git Bash 访问 VPS。 VPS是ubuntu,本地机是windows7 我想是的。但是我对ubuntu不熟悉。你能给我一些建议吗? 大声笑,我根本没有付钱。我使用 cat intead,但需要手动格式化 我和@cqcn1991 有同样的问题 使用DISPLAY=:0 xclip 也可以从作业中清除剪贴板。就我而言,我使用at 在复制后两分钟清除剪贴板。【参考方案7】:

试试这个,它会像一个魅力一样工作。我遇到了同样的错误,但这种方法对我有用:

ssh USER@REMOTE "cat file"|xclip -i

【讨论】:

【参考方案8】:

由 root 用户添加此命令: ssh user_to_acces@hostName -X

user_to_acces = 用户 hostName = 主机名机器

【讨论】:

以上是关于错误:使用 Xclip 复制 ssh 公钥时无法打开显示:(null)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

centos设置免密登录时复制公钥复制错了虚拟机

无法为新用户生成有效的 ssh 公钥/私钥对

解决ssh-copy-id时Host key verification failed的错误

无法使用密钥身份验证 ssh 到服务器

使用 ssh-copy-id 复制您的公钥

xshell密钥登录