错误:使用Xclip复制ssh公钥时无法打开display:(null)

cqcn1991 95 linux ssh

它说,我正在关注生成SSH密钥

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) 什么问题?我用Google搜索,但一无所获

小智.. 104

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pub不适用于我(ubuntu 14.04),但你可以使用:

cat ~/.ssh/id_rsa.pub

获取您的公钥

  • 什么?!这怎么能解决xclip无法正常运行的问题? (101认同)
  • @dval,我不同意它应该是1号答案,因为这个问题提到`xclip`的用法不只是用`cat~/.ssh/id_rsa.pub`在bash中显示SSH密钥.但是,这有助于解决问题,因为您可以在显示时复制该值. (21认同)
  • 实际上,这个答案极具误导性. (16认同)
  • 除非您尝试复制长文件. (14认同)
  • 对于试图通过ssh复制文件内容的任何人来说,这应该是第一个答案 (7认同)

Marc Stober.. 52

根据这个问题的日期,原始海报不会使用Windows子系统Linux.但是,如果您是,并且您得到相同的错误,则以下替代方案有效:

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

感谢这个页面指出Windows的clip.exe(你必须键入".exe")可以从bash shell运行.

  • 你也可以使用管道`cat~/.ssh/id_rsa.pub | clip.ese`正常工作 (5认同)
  • @chriz我认为你的意思是"exe"不是"ese"? (2认同)
  • 哦,是的,抱歉这只是一个错字,它是`cat~/.ssh/id_rsa.pub | clip.exe`.感谢您指出了这一点. (2认同)

Carles Alcol.. 28

这是一个很好的答案,不发布在这里.这是从一个老乡用户askubuntu:

剪贴板由X服务器提供.无论服务器是否无头,都无关紧要,重要的是您的本地图形会话可供远程计算机上运行的程序使用.由于X的网络透明设计,这是可能的.

我假设您使用SSH从运行Linux的计算机连接到远程服务器.确保在客户端配置和服务器配置中都启用了X11转发.在客户端配置中,您需要将该行ForwardX11 yes放入 ~/.ssh/config默认情况下,或者将该选项传递给该会话-Xssh命令.在服务器配置,你需要有行X11Forwarding yes/etc/ssh/sshd_config(这是默认存在在Ubuntu).

要检查是否启用了X11转发,请查看DISPLAY环境变量的值 :echo $DISPLAY.您应该看到一个值localhost:10(在远程计算机上运行的应用程序被告知连接到在同一台计算机上运行的显示器,但该显示连接实际上是通过SSH转发到客户端显示器).请注意,如果DISPLAY未设置,则手动设置是没有用的:如果转发到位,则始终正确设置环境变量.如果您需要诊断SSH连接问题,通过选项-vvvssh获得所发生的事情的详细跟踪.

如果您通过其他方式进行连接,则可能会或可能无法实现X11转发.如果您的客户端运行Windows, PuTTY 支持X11转发; 你必须在Windows机器上运行X服务器,例如Xming.

- 来自askubuntu的Gilles


小智.. 16

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

ssh user@host -X

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


hek2mgl.. 9

已阅读您链接的文档.那太傻了!xclip只是一个剪贴板.你会发现其他方法来复制粘贴密钥...(我敢肯定)


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

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

当然:0取决于您使用的显示器.如果您有一台典型的台式机,那很可能就是这样:0

  • 我得到`错误:无法打开显示:: 0`.顺便说一句,我通过Git Bash访问VPS.VPS是ubuntu,本地机器是windows7 (3认同)

VaTo.. 9

尝试这个,它将像一个魅力.我遇到了同样的错误,但这种方法对我有用:

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


Dario.. 7

以下内容对我也有用:

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

  • 我认为pbcopy是一个mac的东西,而不是linux (4认同)