如何将SSH密钥传输到另一台计算机?


42

我在两台计算机上都有帐户:H1和H2。我在H1上创建了ssh密钥,并将其安装在S1上。我现在可以从H1切换到S1。我想从H2做同样的事情。如何在H2上的H1上安装生成的ssh密钥?


2
既然ssh-copy-id是一个更防呆(没有现有的密钥或无意复制的覆盖专用键,而不是公众和少为人知的解决方案的关键),请考虑接受这些答案为接受的答案之一。
2014年

Answers:


28

编辑:如果您同时拥有两台计算机,则可以共享您的私钥。但是对于笔记本电脑失窃或您不拥有的机器,此解决方案并不安全

如果要使用相同的私钥从H2登录到S1,则可以将私钥从H1复制到H2。在H1时,请执行以下命令:

H1$ ssh H2 mkdir ~/.ssh
H1$ scp  ~/.ssh/id_rsa ~/.ssh/id_dsa H2:~/.ssh/

警告!这将删除并替换您在H2拥有的任何私钥。

更好的方法是在H2(ssh-keygen)上生成新的私钥,并使用ssh-copy-idutil 将其公共部分安装在S1上。在这种更安全的情况下,您将拥有两套钥匙。一个用于H1-S1登录,第二个用于H2-S1登录。在S1处将授权两个公共密钥。而且,您将可以撤消它们中的任何一个或两者(例如,当笔记本电脑被盗,或者计算机的所有者决定禁用您的帐户并重新使用所有文件时)。


8
复制私钥确实不是一个好主意。在多个位置拥有一个密钥1.使其更容易受到攻击;2.增加您失去对所有位置的控制的风险;3.不允许您仅从一个位置禁用访问。从安全角度考虑,您应该在每个位置生成一个新的密钥对-木桥的解决方案。
pabouk

27

采用 ssh-copy-id

概要

ssh-copy-id [-i [identity_file]] [user @]计算机

描述

ssh-copy-id是一个脚本,该脚本使用ssh登录到远程计算机,并将指示的标识文件附加到该计算机的〜/ .ssh / authorized_keys文件中。


1
@我想从H2到S1做SSH。我想将我的私钥和公钥从H1传输并安装到H2。这样可以吗?
布鲁斯

3
@Bruce不,您需要在h2上重新生成密钥,然后使用该命令复制密钥。另一种方法是让h1和h2共享主目录。
木桥

9

使用两个私钥

使用与设置H1相同的过程(但不是相同的私钥)来设置H2:

  • 从来没有很好的理由从其他计算机上复制私钥。如果您尚未在H2上生成新的私钥,请立即执行。同时生成相应的公钥。在H2的一个终端中,

类型: ssh-keygen -t rsa

  • 将H2的公钥复制到服务器。在H2的一个终端中,

类型: ssh-copy-id username@S1.net

(但是请在S1和S1的主机名上使用您的实际用户名,然后在需要时在S1上键入您的密码)。

这会将工作站的公共密钥安装到~/.ssh/authorized_keys服务器上该用户的文件中。

  • 没有步骤3。从现在开始,您可以从H2登录到S1,也可以从H1登录到S1。

细节

我认为您真正要问的是

  • 我有一台服务器(“ S1”)
  • 我从个人笔记本电脑(“ H1”)登录到服务器
  • 我还想从工作站(“ H2”)登录到服务器。

什么是正确的方法?

  • 我想我可以简单地从两个地方使用相同的密码登录。那不是正确的方法,因为每个人都说公钥认证比密码好得多。(一种)
  • 我想我可以将私钥从笔记本电脑复制到工作站。那不是正确的方法,因为每个人都说私钥永远不会离开客户端计算机。

人们已经意识到,服务器上的一个帐户只有一个用户名,当然还有一个授权密码。

像ssh这样的公钥系统比密码系统要好:服务器上的一个帐户具有一个用户名和任意数量的授权公钥,所有这些都在~/.ssh/authorized_keys文件中列出。

更多详细信息)。


原谅我重复自己
大卫·卡里

0

ssh-copy-id是否可以为您完成这项工作:http : //linux.die.net/man/1/ssh-copy-id


@我想从H2到S1做SSH。我想将我的私钥和公钥从H1传输并安装到H2。这样可以吗?
布鲁斯

2
如果使用ssh-copy-id登录到S1或H1(现在有您的密钥),则可以将公共密钥(非私有)转移到H2。通常,最好限制安装私钥的计算机的数量。尝试将其保留在少数安全机器上,以防止其丢失。

如何将我的私钥复制到H2?
布鲁斯

0

用于将SSH密钥从一台计算机转移到另一台计算机。只需将整个文件夹从H1(旧机器)的〜/ .ssh复制到新机器H2的〜/ .ssh内容文件夹。

现在尝试:

ssh ubuntu@13.123.43.26(您的S1 ip)

您很可能会收到权限警告以修复该运行:

chmod 400〜/ .ssh / id_rsa

现在再次:

ssh ubuntu@13.123.43.26(您的S1 ip)

现在它将正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.