无法复制〜/ .ssh / id_rsa.pub


117

我关注“ 生成SSH密钥”,它说

须藤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) 什么问题?我到处搜寻,但一无所获


什么echo $DISPLAY发言权?
Fred Foo 2013年

没有。我在服务器上通过ssh运行此命令
迈克尔·帕切科

Answers:


123

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

cat ~/.ssh/id_rsa.pub

获取您的公钥


11
对于任何试图通过ssh复制文件内容的人,这应该是1号答案
dval 2014年

23
除非您要复制长文件。
Flavian Hautbois 2014年

26
@dval,我不同意这将是第一个答案,因为该问题提到的xclip用法不只是使用,在bash中显示SSH密钥cat ~/.ssh/id_rsa.pub。但是,这有助于解决问题,因为您可以在显示值时复制该值。
Nik Sumeiko

123
什么?!如何解决xclip无法运作的问题?
Vato

26
实际上,这个答案极具误导性。
哈桑·坎·萨勒

78

根据这个问题的日期,最初的张贴者不会使用Linux的Windows子系统。但是,如果您遇到相同的错误,则可以使用以下替代方法:

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

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


8
您也可以使用管道cat ~/.ssh/id_rsa.pub | clip.ese才有效
chriz

2
@chriz我认为您的意思是“ exe”而不是“ ese”?
Marc Stober

3
哦,对不起,那只是一个错字,是cat ~/.ssh/id_rsa.pub | clip.exe。感谢您指出了这一点。
chriz

1
@Moytaba CONTROL SHIFT V.
JoanComasFdz

1
对于那些希望在所有平台上使用单个命令的用户:请将其添加到您的~/.bashrc~/.bash_profile:中alias pbcopy="clip.exe"。感谢@chriz指出管道|工作正常。
Dio Phung

37

这是一个很好的答案,不要在此处发布。是来自Gillesaskubuntu的一位用户:

剪贴板由X服务器提供。服务器是否无头无所谓,重要的是本地图形会话可用于远程计算机上运行的程序。由于X的网络透明设计,这才有可能。

我假设您正在从运行Linux的计算机上使用SSH连接到远程服务器。确保在客户端配置和服务器配置中都启用了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计算机(例如Xming)上运行X服务器。

通过吉尔从askubuntu



10

阅读了已链接的文档。太傻了!xclip只是一个剪贴板。您会发现其他复制粘贴键的方法...(我确定)


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

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

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


7
我懂了Error: Can't open display: :0。顺便说一句,我正在通过Git Bash访问VPS。VPS是ubuntu,本地计算机是Windows7
cqcn1991

我认同。但是我对ubuntu不熟悉。你能给我一些建议吗?
cqcn1991 2013年

大声笑,我一点也不付钱。我使用cat intead,但需要手动对其进行设置
cqcn1991

1
我对@ cqcn1991有同样的问题
Nam G VU

1
使用DISPLAY=:0 xclip还可以清除作业中的剪贴板。就我而言,我是at在复制两分钟后清除剪贴板。
majgis

9

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

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

8

以下内容也适用于我:

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

使用pem文件也可以工作:ssh -i /path/myapp.pem <user> @ <host>“ cat <filepath>” | pbcopy
alemol '16

4
我以为pbcopy是Mac而不是Linux
Alexander Mills

1

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

user_to_acces =用户hostName =主机名计算机

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.