复制ssh密钥到另一台机器的最简单方法?
我在家里很懒,对我的家庭机器使用密码认证。我已经准备好转为基于密钥的认证。网络上有很多关于如何做的选择,包括用猫的方式然后把钥匙传过去,直接把钥匙传过去,等等。
我正在寻找最简单和最值得推荐的复制钥匙的方法,希望在Ubuntu的ssh包中有一个方便的封装器?
我已经知道如何关闭密码登录。
347
6
我在家里很懒,对我的家庭机器使用密码认证。我已经准备好转为基于密钥的认证。网络上有很多关于如何做的选择,包括用猫的方式然后把钥匙传过去,直接把钥匙传过去,等等。
我正在寻找最简单和最值得推荐的复制钥匙的方法,希望在Ubuntu的ssh包中有一个方便的封装器?
我已经知道如何关闭密码登录。
ssh-copy-id
命令(在openssh-client软件包中,默认安装)正是这样做的。将你默认身份的公钥(其他身份使用
-i identity_file
)复制到远程主机。默认身份是你的"标准" ssh密钥。它由你的
~/.ssh
目录下的两个文件(公钥和私钥)组成,通常命名为identity
、id_rsa
、id_dsa
、id_ecdsa
或id_ed25519
(与.pub
相同),取决于钥匙的类型。如果你没有创建一个以上的ssh密钥,你不必担心指定身份,ssh-copy-id会自动选择它。如果你没有身份,你可以用
ssh-keygen
工具生成一个。此外,如果服务器使用的端口与默认的不同(
22
),你应该用引号来表示(source)。我喜欢马塞尔的回答。我不知道这个命令。我一直在使用我在Oracle网站上发现的东西。
我想还是把它贴在这里,因为它很好地说明了在*shell代码中可以利用
ssh
的力量实现什么。但使用 "ssh-copy-id "无疑是一种更安全的方法。注意,如果文件夹
.ssh
不存在,上述命令将失败。此外,在创建文件时,最好设置一个最小的权限(基本上只对所有者进行读写)。这里有一个更高级的命令。图形方法
1.打开应用程序 ▸ 密码和钥匙 ▸ 我的个人钥匙。 2.选择你的密钥,然后点击远程 ▸ 为安全壳配置密钥。
在Ubuntu上,你可以从Launchpad上获取你的钥匙。
详细内容。
登录后,点击SSH键旁边的按钮:。
将你的公钥文件的内容粘贴在该栏中(包括注释)。 这样的密钥看起来就像
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
后,在客户端机器上运行。这将通过HTTPS从Launchpad服务器下载公钥,从而保护你免受MITM攻击。
在Ubuntu Lucid及之前的版本中,你可以通过以下方式实现同样的功能。
echo
命令是需要在带有SSH密钥的行后多加一个新行。用于自定义端口
-i switch默认为~/.ssh/id_rsa.pub,如果你想要其他的密钥,请在-i后面加上密钥的路径。
警告:如果你没有写-i,它将复制你在 ~/.ssh 中找到的所有密钥。
ssh-copy-id
正是这样做的。 我不知道为什么这里的其他一些答案会添加不准确的信息。 帮助中显示了以下内容。我刚刚在Ubuntu 18.04客户端和CentOS 7.6服务器上尝试了以下方法,效果非常好。 这个例子显示了使用自定义的 "2222 "端口,并在"~/.ssh/path-to-rsa.pub "处指定一个公钥。
在运行该命令之前,我实际上用最后的
-n
开关进行了一次试运行,确认了该命令将按预期的方式运行。 确认之后,我又如上所述运行了该命令,但没有使用-n
开关。