错误:使用 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_profile
:alias 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已阅读您链接的文档。这完全是愚蠢的! 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)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章