我正在寻找一种最简单,建议的方法来复制密钥希望在Ubuntu ssh包中的某个地方有一个方便包装器吗?
我已经知道如何关闭密码登录。
#1 楼
ssh-copy-id
命令(在openssh-client软件包中,并且默认情况下已安装)完全是这样的:ssh-copy-id user@hostname.example.com
复制默认身份的公钥(将
-i identity_file
用于其他身份) )到远程主机。 默认身份是您的“标准” ssh密钥。它由
~/.ssh
目录中的两个文件(公共密钥和私有密钥)组成,根据密钥的类型,通常分别命名为identity
,id_rsa
,id_dsa
,id_ecdsa
或id_ed25519
(与.pub
相同)。如果您创建的ssh密钥不止一个,则不必担心指定身份,ssh-copy-id会自动选择它。如果您没有身份,您可以使用工具
ssh-keygen
生成一个端口。此外,如果服务器使用的端口与默认端口(
22
)不同,则应以这种方式使用引号(源):ssh-copy-id "user@hostname.example.com -p <port-number>"
评论
默认身份是什么?
– Oxwivi
2011-6-4 18:28
对于不同的端口,请使用以下命令:ssh-copy-id“ user @ host -p 6842”
– jibon57
2014年1月25日20:27
如果您要复制到的远程服务器不允许密码提示,并且基本上已被锁定保存以进行SSH访问,该怎么办?
– Cyle
2014年1月29日23:13
在Mac上,您可以执行brew install ssh-copy-id,然后运行命令。
– Avishai
2014-09-30 14:31
@MarcelStimberg,请更新答案以包含-i个人资料;人们可能拥有多个按键并将其全部按下,或者不得不在注释中寻找-i选项
–尼克
17 Mar 12 '17 at 18:07
#2 楼
我喜欢马塞尔的回答。我不知道这个命令。我一直在使用在Oracle网站上找到的内容:cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
我想仍将其张贴在这里,因为它很好地说明了可以使用
ssh
的功能在shell代码中实现。但是使用ssh-copy-id
绝对是一种更安全的方法来正确执行此操作!请注意,如果文件夹
.ssh
尚不存在,则上述命令将失败。另外,在创建文件时设置一个最小可能的权限可能更好(基本上是仅所有者拥有读写权限)。这是更高级的命令:cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
评论
这个确切的命令也可以在Mac上使用
– Mihai P.
15年2月20日在4:09
它应该可以在具有大多数shell的任何Unix下运行。我已经用一个更新的命令更新了帖子,以防远端不存在.ssh文件夹。
–惠更斯
2015年3月1日14:54
猫不是必需的-正常的输入重定向就足够了,例如<〜/ .ssh / id_rsa.pub | ssh ...
–maxschlepzig
16-3-17在22:44
@惠更斯谢谢。记住这一点更有用,因为您不需要安装任何东西,而且对于执行外部命令(例如,如您在高级示例中演示的那样,更改服务器端权限。
–乔纳森·科玛(Jonathan Komar)
16年3月21日在13:15
我更喜欢这种方式,因为它可以让您使用冗长的ssh,这有助于弄清为什么损坏了东西。 sshcopyid只是冻结而从未工作过,这一切进行得很顺利。
–警笛声
17年5月29日在23:03
#3 楼
图形方法打开应用程序▸密码和密钥▸我的个人密钥。
选择密钥,然后单击“远程”▸为Secure Shell配置密钥。
评论
我的菜单中没有“密码和加密密钥”。
–乔治·卡斯特罗(Jorge Castro)
2010-09-27 20:33
您正在使用哪个Ubuntu版本?在Ubuntu 10.04 LTS中,默认情况下应可用。
–ændrük
2010-09-27 20:46
10.10,刚刚添加了标签。马塞尔(Marcel)的答案就是我想要的答案,尽管您的台式机答案为+1!
–乔治·卡斯特罗(Jorge Castro)
2010-09-27 21:04
这个程序是海马。
–吉尔斯'所以-不再是邪恶的'
2010-09-27 21:12
我认为此应用程序位于10.10的“系统”->“首选项”菜单中(目前无法检查,我在10.04上)
–惠更斯
2010-10-11 22:07
#4 楼
在Ubuntu上,您可以从Launchpad获取密钥:ssh-import-id [launchpad account name]
详细信息:
您需要一个Launchpad帐户才能登录或创建帐户
登录后,单击SSH密钥旁边的按钮:
将公共密钥文件的内容粘贴到该字段中(包括注释)。这样的密钥如下:
通过按导入公共密钥保存密钥
如果一切顺利,您的密钥现在应列在SSH密钥下:
软件包
ssh-rsa
需要安装在需要从远程访问的机器上。该软件包与AAAAB3Nza .... UyDOFDqJp
软件包一起安装,因为它是lekensteyn
的推荐软件包。确保在客户端计算机上安装了ssh-import-id
之后,运行:ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
这将通过HTTPS从启动板服务器下载公钥,从而保护您免受MITM攻击。
在Ubuntu Lucid之前的版本上,您可以使用以下命令完成此操作:
ssh-import-id [launchpad account name]
需要
openssh-server
命令以在之后获得额外的换行符SSH密钥所在的行。ssh-import-id的手册页
#5 楼
对于自定义端口ssh-copy-id -i "user@hostname.example.com -p2222"
-i开关默认为〜/ .ssh / id_rsa.pub,如果需要另一个密钥,请将密钥路径放在-i <之后br />
警告:如果您未编写-i,它将复制〜/ .ssh中找到的所有密钥
评论
您确定该警告吗? “ -i identity_file-仅使用identity_file中包含的密钥(而不是通过ssh-add(1)或default_ID_file查找身份)。如果文件名未以.pub结尾,则添加该文件。如果文件名省略,则使用default_ID_file。”
– Yousha Aleayoub
15年4月22日在20:37
#6 楼
解决方案非常简单:将
~/.ssh
移至新机器并运行ssh-add
。完成!长答案:
在旧机器中,将文件夹
~/.ssh
放入USB驱动器或您喜欢的任何其他存储中。在新机器上,将在
~
下又称为/home/$USER
下的文件夹。在新机器上运行
ssh-add
。PS做了多次。我对互联网上过于复杂的解决方案感到惊讶,这些解决方案通常不起作用。
#7 楼
ssh-copy-id
正是这样做的。我不确定为什么这里的其他一些答案添加了不正确的信息。帮助显示以下内容:~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [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
我刚刚在具有CentOS 7.6服务器的Ubuntu 18.04客户端上尝试了以下操作,它像一个魅力一样工作。该示例显示了使用
2222
的自定义端口,并在~/.ssh/path-to-rsa.pub
处指定了公钥$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld
在运行命令之前,我实际上在最后使用了
-n
开关经过试运行,确认该命令将按预期运行。确认后,我又重新运行了上述命令,没有使用-n
开关。#8 楼
如果您已经拥有一个主机密钥(例如AWS EC2),请执行cat ~/.ssh/id_rsa.pub | ssh -i hostkey.pem hostname@hostaddress 'cat >> .ssh/authorized_keys && echo "Key copied" '
下次,只需执行以下操作:
ssh hostname@hostaddress
评论
askubuntu.com/questions/307881/…