如何将我的 SSH 密钥传输到另一台机器?

Bru*_*uce 66 linux ssh

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

osg*_*sgx 40

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

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

H1$ ssh H2 mkdir ~/.ssh
H1$ scp  ~/.ssh/id_rsa ~/.ssh/id_dsa H2:~/.ssh/
Run Code Online (Sandbox Code Playgroud)

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

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

  • 复制私钥确实不是一个好主意。在多个位置使用一个密钥 **1.** 使其更容易受到攻击,**2.** 会增加您失去对所有位置的控制的风险,**3.** 不允许您仅从一个位置。从安全的角度来看,你应该在每个位置生成一个新的密钥对——木乔的解决方案。 (11认同)

Mu *_*iao 31

ssh-copy-id

概要

ssh-copy-id [-i [identity_file]] [user@]machine

描述

ssh-copy-id 是一个脚本,它使用 ssh 登录到远程机器并将指定的身份文件附加到该机器的 ~/.ssh/authorized_keys 文件中。

  • @Bruce 不,您需要在 h2 上重新生成密钥并使用该命令复制您的密钥。另一种方法是让 h1 和 h2 共享主目录。 (3认同)

Dav*_*ary 16

使用两个私钥

使用与设置 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文件中。

更多细节)。


小智 5

用于将 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)

现在就可以正常工作了。


小智 5

这里的所有问题都解决了使用 将身份从一台服务器复制到另一台服务器的问题ssh-copy-id,这不是问题的重点。

问题似乎要问的问题是如何使在个人计算机(H1)上生成和使用的相同的公私密钥对可以在另一台个人计算机(H2)上使用,从而不必设置新的私钥 - 公钥并手动将其添加到我们用来连接的每个服务器

出于其他人广泛提到的安全原因,这是不可取的,但是,可以通过以下步骤实现:

  1. 将您的私人(例如~/.ssh/id_rsa)和公共(例如~/.ssh/id_rsa.pub)从您的 H1 机器复制到您所在位置的 H2 机器~/.ssh(仅通过您将在之后格式化的受信任 USB 执行此操作,不要使用电子邮件或任何其他基于互联网的媒体)。当您在 H2 中执行以下命令时ls -alt ~/.ssh,输出将至少包含以下内容:
-rw-r--r--  1 youUserName youUserName 1240 Nov  3 14:52 id_rsa
-rw-r--r--  1 youUserName youUserName  412 Nov  3 14:52 id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
  1. 在 H2 上,使用命令将私钥的权限更改为不易访问(否则将进行下一步)chmod 600 ~/.ssh/id_rsa,以便以下命令的输出ls -alt ~/.ssh将包含以下内容(注意与上述权限的区别):
-rw-------  1 youUserName youUserName 1240 Nov  3 14:52 id_rsa
-rw-r--r--  1 youUserName youUserName  412 Nov  3 14:52 id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
  1. 最后一步。在 H2 上,现在使用该命令ssh-add ~/.ssh/id_rsa启用私钥-公钥对,以用于从 H2 向您将使用导入的私钥-公钥连接到的任何服务器标识您自己。

现在,任何sshscp命令ssh yourUserName@ip-address都应该成功,就像您登录到 H1 一样。

安全注意事项:

  • 请考虑其他建议以获得更好的安全性,即生成新的公私密钥对
  • 我认为这很有用的唯一情况是当继续使用新机器时,H2 将成为您的主要计算机,而 H1 将不再使用;
  • 如果您仍在使用 H1 和 H2,则没有合理的理由使用 H2 中的相同私钥-公钥对。