165

我正在关注生成 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) 了问题是什么?我四处搜索,但一无所获

4

8 回答 8

165

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

cat ~/.ssh/id_rsa.pub

获取你的公钥

于 2014-06-02T15:56:10.263 回答
120

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

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

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

于 2017-07-04T20:53:09.863 回答
50

这是一个太好的答案,不要在这里发布。来自askubuntu的用户Gilles

剪贴板由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

于 2016-09-18T10:13:27.970 回答
29

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

ssh user@host -X

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

于 2015-04-13T08:35:02.853 回答
14

以下内容也对我有用:

ssh <user>@<host>  "cat <filepath>"|pbcopy 
于 2016-02-15T09:45:06.853 回答
10

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


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

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

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

于 2013-09-09T10:15:15.873 回答
9

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

ssh USER@REMOTE "cat file"|xclip -i
于 2015-06-18T18:01:27.040 回答
0

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

user_to_acces = 用户主机名 = 主机名机器

于 2019-02-12T11:16:31.763 回答