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

我在家里很懒,对家用机器使用密码validation。 我准备转向基于密钥的身份validation。 网上有很多关于如何做到这一点的选项,包括捕获然后将密钥翻过来,直接搜索密钥等。

我正在寻找最简单和推荐的方法来复制密钥,希望在Ubuntu ssh包中的某处有一个便利包装器?

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

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

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

将默认标识的公钥(使用-i identity_file用于其他标识)复制到远程主机。

默认标识是您的“标准”ssh密钥。 它由~/.ssh目录中的两个文件(公钥和私钥)组成,通常名为identityid_rsaid_dsa (与.pub相同),具体取决于键的类型。 如果您没有创建多个ssh密钥,则不必担心指定标识,ssh-copy-id将自动选择它。

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

此外,如果服务器使用的端口不同于默认端口( 22 ),则应使用这种方式引用标记( 源 ):

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

我喜欢马塞尔的答案。 我不知道这个命令。 我一直在使用我在SUN网站上找到的内容:

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

我想在这里发布它,因为它很好地说明了在ssh的强大function下shell代码可以实现的function。 但是使用ssh-copy-id绝对是一种更安全的方法!

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

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

图形方法

  1. 打开应用程序密码和密钥我的个人密钥
  2. 选择您的密钥,然后单击远程配置安全Shell的密钥

设置计算机以进行SSH连接

在Ubuntu上,您可以从Launchpad获取密钥:

 ssh-import-id [launchpad account name] 

细节

  1. 您需要一个Launchpad帐户才能登录或创建帐户
  2. 登录后,单击SSH密钥旁边的按钮
  3. 将公钥文件的内容粘贴到该字段中(包括注释)。 这样的关键看起来像:

     ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn 

    这里, ssh-rsa表示密钥是RSA密钥, AAAAB3Nza .... UyDOFDqJp是实际密钥, lekensteyn是注释。

  4. 导入公钥保存密钥
  5. 如果一切顺利,您的密钥现在应该在SSH密钥下列出:

ssh-import-id包需要安装在需要从远程访问的机器上。 此软件包与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 

在使用SSH密钥的行之后获取额外的换行符需要echo命令。

  • ssh-import-id的手册页

用于自定义端口

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

-i开关默认为〜/ .ssh / id_rsa.pub,如果你想要另一个键,在-i之后放入键的路径

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