我构建了一个无头 Ubuntu Server 18.04(无 GUI)。这是在 VirtualBox 中构建的模拟环境,旨在模拟我即将面临的配置生产场景。生产环境将是远程的,并通过 VPN 访问。请注意,VirtualBox 不是生产场景的一部分。
我已经创建了用于 GitHub 的私钥/公钥 ssh 密钥对,因此我可以添加新的部署密钥
我需要能够获取公钥的副本以添加到 GitHub。
通过终端使用无头服务器时没有剪贴板。我尝试安装和配置xclip
/xsel
使其表现得像pbcopy
/ pbpaste
。这在 GUI 上效果很好,Ubuntu
但在通过终端使用无头服务器时不起作用。
尝试xclip
像这样使用:
DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pub
结果是:
Error: Can't open display: :0
我尝试启动并运行 OpenSSH。我不是 SSH 专家,也没有让它工作。
还有其他方法可以从无头服务器获取 ssh 公钥吗?它是一个没有物理访问权限的远程服务器。
答案1
在正常情况下,您将能够通过 SSH 访问远程 Ubuntu 服务器。为此,在您的台式机上,您将使用终端仿真器作为gnome 终端(在 Ubuntu 上)或油灰(在 Windows 上)等。因此,您可以执行cat id_rsa.pub
,然后从正在使用的终端窗口复制密钥的内容并将其粘贴到浏览器窗口的密钥字段中。实际上,通过这种方式,您将使用(本地)桌面系统的剪贴板。
openssh-server
您需要在远程实例和本地(桌面)实例上安装所需的内容openssh-client
。使用以下命令执行此操作:
sudo apt install openssh-server
sudo apt install openssh-client
然后,您必须拥有远程实例的 IP 地址(或域名),您可以从本地实例访问该实例,无论是直接访问,还是通过 VPN、SSH 隧道等方式访问。在您的情况下,您可以使用它来ifconfig
查找 LAN 中 Ubuntu 服务器的 IP 地址。
ssh 命令的基本语法是:
ssh user@host # where host IP address or domain name
您应该在本地(桌面)系统的终端窗口中执行该命令。然后,您就可以在 GUI 环境中自由地(取决于您的用户权限)在远程服务器上进行操作 :)
进一步阅读:
答案2
我问的问题和大家指出的问题/答案之间的区别在于:我有一个无头服务器(没有 GUI),只有一个基于服务器的终端,不支持剪贴板、鼠标等。我可以很好地“cat”出公钥。我正在寻找一种简单的方法来复制它。我安装了 xsel 和 xclip,但没有剪贴板,这些实用程序就无法工作。
我的解决方案: 将公钥文件通过 ftp 传输到远程服务器。虽然有点儿麻烦,但确实有效。