【问题标题】:Error: Can't open display: (null) when using Xclip to copy ssh public key [closed]错误:使用 Xclip 复制 ssh 公钥时无法打开显示:(null)[关闭]
【发布时间】:2023-04-03 04:28:01
【问题描述】:

我正在关注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) 问题是什么?我用谷歌搜索了一下,但什么也没找到

【问题讨论】:

  • echo $DISPLAY 说什么?
  • 什么都没有。我正在通过 ssh 在服务器上运行此命令

标签: linux ssh


【解决方案1】:

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

cat ~/.ssh/id_rsa.pub

获取你的公钥

【讨论】:

  • 这应该是任何试图通过 ssh 复制文件内容的人的第一选择
  • 除非您尝试复制长文件。
  • @dval,我不同意它应该是第一答案,因为这个问题提到了xclip 的用法,而不仅仅是在带有cat ~/.ssh/id_rsa.pub 的 bash 中显示 SSH 密钥。但是,这有助于解决问题,因为您可以在值显示时复制它。
  • 什么?!这如何解决 xclip 无法正常工作的问题?
  • 其实这个答案是非常具有误导性的。
【解决方案2】:

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

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

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

【讨论】:

  • 你也可以使用管道cat ~/.ssh/id_rsa.pub | clip.ese 就可以了
  • @chriz 我想你的意思是“exe”而不是“ese”?
  • 哦,是的,抱歉,这只是一个错字,它是cat ~/.ssh/id_rsa.pub | clip.exe。感谢您指出这一点。
  • @Moytaba CONTROL SHIFT V.
  • 对于那些喜欢在所有平台上使用单个命令的人:将此添加到您的 ~/.bashrc~/.bash_profilealias pbcopy="clip.exe"。并感谢@chriz 指出管道| 工作得很好。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    ssh user@host -X
    

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

    【讨论】:

      【解决方案5】:

      以下内容也适用于我:

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

      【讨论】:

      • 也可以使用 pem 文件: ssh -i /path/myapp.pem @ "cat " | pbcopy
      • 我认为 pbcopy 是 mac 的东西,而不是 linux
      【解决方案6】:

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


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

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

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

      【讨论】:

      • 我收到Error: Can't open display: :0。顺便说一句,我正在通过 Git Bash 访问 VPS。 VPS是ubuntu,本地机是windows7
      • 我想是的。但是我对ubuntu不熟悉。你能给我一些建议吗?
      • 大声笑,我根本没有付钱。我使用 cat intead,但需要手动格式化
      • 我和@cqcn1991 有同样的问题
      • 使用DISPLAY=:0 xclip 也可以从作业中清除剪贴板。就我而言,我使用at 在复制后两分钟清除剪贴板。
      【解决方案7】:

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

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

      【讨论】:

        【解决方案8】:

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

        user_to_acces = 用户 hostName = 主机名机器

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 2021-04-03
          • 1970-01-01
          • 1970-01-01
          • 2012-05-14
          • 2019-01-12
          • 2017-09-29
          相关资源
          最近更新 更多