复制ssh密钥到另一台机器的最简单方法?

我在家里很懒,对我的家庭机器使用密码认证。我已经准备好转为基于密钥的认证。网络上有很多关于如何做的选择,包括用猫的方式然后把钥匙传过去,直接把钥匙传过去,等等。

我正在寻找最简单和最值得推荐的复制钥匙的方法,希望在Ubuntu的ssh包中有一个方便的封装器?

我已经知道如何关闭密码登录

对该问题的评论 (1)
解决办法

ssh-copy-id命令(在openssh-client软件包中,默认安装)正是这样做的。

ssh-copy-id user@hostname.example.com

将你默认身份的公钥(其他身份使用-i identity_file)复制到远程主机。

默认身份是你的"标准" ssh密钥。它由你的~/.ssh目录下的两个文件(公钥和私钥)组成,通常命名为identityid_rsaid_dsaid_ecdsaid_ed25519(与.pub相同),取决于钥匙的类型。如果你没有创建一个以上的ssh密钥,你不必担心指定身份,ssh-copy-id会自动选择它。

如果你没有身份,你可以用ssh-keygen工具生成一个。

此外,如果服务器使用的端口与默认的不同(22),你应该用引号来表示(source)。

ssh-copy-id "user@hostname.example.com -p "
评论(8)

我喜欢马塞尔的回答。我不知道这个命令。我一直在使用我在Oracle网站上发现的东西。

cat ~/.ssh/id_rsa.pub | ssh @ 'cat >> .ssh/authorized_keys && echo "Key copied"'

我想还是把它贴在这里,因为它很好地说明了在*shell代码中可以利用ssh的力量实现什么。但使用 "ssh-copy-id "无疑是一种更安全的方法。

注意,如果文件夹.ssh不存在,上述命令将失败。此外,在创建文件时,最好设置一个最小的权限(基本上只对所有者进行读写)。这里有一个更高级的命令。

cat ~/.ssh/id_rsa.pub | ssh @ 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
评论(5)

图形方法

1.打开应用程序密码和钥匙我的个人钥匙。 2.选择你的密钥,然后点击远程为安全壳配置密钥

评论(5)

在Ubuntu上,你可以从Launchpad上获取你的钥匙。

ssh-import-id [launchpad account name]

详细内容

  1. 你需要一个Launchpad账户,所以登录或创建一个账户
  2. 登录后,点击SSH键旁边的按钮:

  3. 将你的公钥文件的内容粘贴在该栏中(包括注释)。 这样的密钥看起来就像

ssh-rsa AAAAB3Nza ......。 UyDOFDqJp lekensteyn 这里,ssh-rsa表示密钥是RSA密钥,AAAAB3Nza ......是实际密钥,lekensteyn是注释。 UyDOFDqJp是实际密钥,lekensteyn是注释。 4. 按导入公钥保存密钥。 5. 如果一切顺利,你的密钥现在应该列在SSH密钥下:

需要在需要从远程访问的机器上安装ssh-import-id包,这个包是和openssh-server包一起安装的,因为它是openssh-server的推荐包。 这个包是和openssh-server包一起安装的,因为它是openssh-server的推荐包。 确保安装了ssh-import-id后,在客户端机器上运行。

ssh-import-id [launchpad account name]

这将通过HTTPS从Launchpad服务器下载公钥,从而保护你免受MITM攻击。

在Ubuntu Lucid及之前的版本中,你可以通过以下方式实现同样的功能。

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

echo命令是需要在带有SSH密钥的行后多加一个新行。

评论(0)

用于自定义端口

ssh-copy-id -i "user@hostname.example.com -p2222"

-i switch默认为~/.ssh/id_rsa.pub,如果你想要其他的密钥,请在-i后面加上密钥的路径。

警告:如果你没有写-i,它将复制你在 ~/.ssh 中找到的所有密钥。

评论(1)

ssh-copy-id正是这样做的。 我不知道为什么这里的其他一些答案会添加不准确的信息。 帮助中显示了以下内容。

~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o ] ...] [user@]hostname
    -f: force mode -- copy keys without trying to check if they are already installed
    -n: dry run    -- no keys are actually copied
    -h|-?: print this help

我刚刚在Ubuntu 18.04客户端和CentOS 7.6服务器上尝试了以下方法,效果非常好。 这个例子显示了使用自定义的 "2222 "端口,并在"~/.ssh/path-to-rsa.pub "处指定一个公钥。

$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld

在运行该命令之前,我实际上用最后的-n开关进行了一次试运行,确认了该命令将按预期的方式运行。 确认之后,我又如上所述运行了该命令,但没有使用-n开关。

评论(0)