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

我正在生成SSH密钥 ,它说

sudo apt-get install xclip

#下载并安装xclip。 如果您没有apt-get ,则可能需要使用其他安装程序(如yum

xclip -sel剪辑<〜/ .ssh / id_rsa.pub

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

但是,我运行xclip -sel clip < ~/.ssh/id_rsa.pub我得到Error: Can't open display: (null)是什么问题? 我googlesearch,但没有发现任何关于它

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

 cat ~/.ssh/id_rsa.pub 

拿到你的公钥

如果你想在远程主机上使用xclip,只需在你的ssh命令中加-X

 ssh user@host -X 

更详细的信息可以在这里find: https : //askubuntu.com/a/305681

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


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

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

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

这个答案太好,不要在这里发布。 这是来自askubuntu的一位同事 :

剪贴板由X服务器提供 。 无论服务器是否为无头,无关紧要,重要的是您的本地graphics会话可用于在远程机器上运行的程序。 由于X的networking透明devise,这是可能的。

我假定你正在用运行Linux的机器通过SSH连接到远程服务器。 确保在客户端configuration和服务器configuration中都启用了X11转发。 在客户端configuration中,您需要在~/.ssh/config中将ForwardX11 yes行设置为默认值,或者将该选项传递给仅用于该会话的ssh命令。 在服务器configuration中,您需要在/etc/ssh/sshd_configX11Forwarding yes行(在Ubuntu上默认存在)。

要检查是否启用了X11转发,请查看DISPLAY环境variables的值: echo $DISPLAY 。 您应该看到像localhost:10这样的值(在远程机器上运行的应用程序被告知连接到在同一台计算机上运行的显示器,但显示连接实际上是通过SSH转发到客户端显示器的)。 请注意,如果没有设置DISPLAY ,手动设置它是没有用的:如果转发就绪,环境variables始终设置正确。 如果您需要诊断SSH连接问题,请将选项-vvv传递给ssh以获取发生的事情的详细跟踪。

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

– 来自askubuntu的Gilles

试试这个,它会像魅力一样工作。 我有同样的错误,但这种做法对我来说是伎俩:

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

根据这个问题的date,原来的海报不会使用Linux的Windows子系统 。 但是,如果你是,而且你得到相同的错误,下面的替代作品:

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

感谢此页面指出Windows的clip.exe(你必须input“.exe”)才能从bash shell运行。

以下也为我工作:

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