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

时间:2013-09-09 10:10:53

标签: linux ssh

我正在关注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) 问题是什么?我在谷歌上搜索但没有发现它

8 个答案:

答案 0 :(得分:86)

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

cat ~/.ssh/id_rsa.pub

获取您的公钥

答案 1 :(得分:36)

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

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

感谢this page指出Windows&#39; clip.exe(你必须键入&#34; .exe&#34;)可以从bash shell运行。

答案 2 :(得分:23)

这是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

答案 3 :(得分:14)

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

ssh user@host -X

可在此处找到更详细的信息:https://askubuntu.com/a/305681

答案 4 :(得分:8)

已阅读您已关联的文档。那太傻了! xclip只是一张剪贴板。你会找到其他方法来复制粘贴密钥......(我敢肯定)


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

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

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

答案 5 :(得分:8)

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

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

答案 6 :(得分:6)

以下内容也适用于我:

App\Http\Request.php

答案 7 :(得分:1)

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

user_to_acces =用户 hostName =主机名机器