如何使用ssh连接两台远程计算机

Net*_*iev 1 ssh

我发现了很多关于通过 ssh 连接两台计算机的教程,但我只是没有得到我想的关键点。(我试过例如这个这个

假设我是使用 ipv4 xxx.xxx.x.xx 的 userA,我想与我的朋友(在另一个国家/地区)userB 使用 ipv4 yyy.yyy.y.yy 建立 ssh 连接

所以,我生成了一个 ssh 密钥,我有一个不错的 ./ssh/id_rsa 和 ./ssh/id_rsa.pub,现在我想将它复制到我朋友的计算机上?

但是,正如人们所怀疑的那样,

ssh-copy-id -i ~/.ssh/id_rsa.pub userB@yyy.yyy.y.yy
Run Code Online (Sandbox Code Playgroud)

不工作(怎么可能,因为我们还没有被限制?)

用户 B 是否必须手动将此文件复制到他自己的 .ssh 文件中?

然后在我的电脑上

ssh userB@yyy.yyy.y.yy

会直接工作吗?(这是非常不现实的,我认为......)

很抱歉这么愚蠢,但在我看来,在教程中,人们正在处理同一台计算机......

gro*_*taj 10

要使公钥身份验证起作用,id_rsa.pub必须~/.ssh/authorized_keys为目标用户附加您的公钥 ( ) 。您将如何获得它与 SSH 无关 - 您必须自己弄清楚。您可以使用任何您想要的媒介,只要它保证完整性(即接收者可以确认他们收到的就是您发送的)。它不必是保密的,因为它是你的公共密钥。私钥 ( id_rsa) 保留在您的计算机上。

那有什么意义ssh-copy-id呢?有两个用例:

  1. 密码认证已启用,您想启用公钥认证。在这种情况下,您必须输入密码才能连接到主机 Bssh-copy-id并将公钥附加到authorized_hosts.

  2. 公钥身份验证已设置,但您想添加另一个密钥,例如使用更强或不同的密码学。特别是您可能想要添加一个不属于您或您当前主机的密钥。在这种情况下,您需要使用-i选项指定密钥文件。(默认是添加所有提供的键,ssh-add -L或者id_rsa.pub如果没有。)

如果您可能已经设置了密码身份验证,为什么还要使用公钥身份验证?因为它是不可能猜测的并且不需要用户交互。


use*_*686 6

所以,我生成了一个 ssh 密钥,我有一个不错的 ./ssh/id_rsa 和 ./ssh/id_rsa.pub,现在我想将它复制到我朋友的计算机上?

是的,具体来说,您应该将您的文件(公钥)复制到远程系统的文件中。~/.ssh/id_rsa.pub~/.ssh/authorized_keys

(虽然,您确实应该在目标计算机上拥有自己的用户帐户,而不是共享您朋友的“userB”帐户。)

[ssh-copy-id] 不工作(怎么可能,因为我们还没有被限制?)

通常,它会通过输入密码登录远程系统来工作。(SSH 使用与本地登录相同的“系统”帐户和密码。)

这里关于 SSH 的事情是它允许客户端从多种登录方法中进行选择——它实际上不仅仅是基于密钥对的。(有点像网站如何允许您使用密码登录、使用 Google 登录、使用 USB 令牌登录等)

当然,如果远程系统已经禁用了基于密码的登录(现在这已经成为一种必需品),那么 ssh-copy-id 确实不能无所事事,您需要将您的公钥复制到服务器的“authorized_keys”文件以某种其他方式。

幸运的是,公钥只是一长串文本,因此您可以通过电子邮件或 Discord 或其他任何方式粘贴它。(虽然 RSA 密钥很长,但ssh-keygen -t ed25519会产生短的 id_ed25519.pub,它甚至可以在紧要关头写在纸上。)

(尽管即使在这些情况下,如果您已经有一个密钥对工作,并且想用它来注册另一个密钥对,ssh-copy-id 在技术上仍然有用。第三种选择是基于 Kerberos 的登录,主要用于公司/业余爱好者环境。)

然后在我的电脑上ssh userB@yyy.yyy.y.yy就可以直接工作了?(这是非常不现实的,我认为......)

具体来说,SSH 部分会起作用,是的。

但是,请注意,SSH 不会神奇地通过 NAT,也不会自动为您设置“端口转发”,因此如果需要访问您朋友的家用计算机,则需要单独完成。(SSH 使用 TCP 端口 22。)同样,如果有防火墙,则需要一个规则来允许 SSH。

所以需要先处理才能ssh y.y.y.y起作用。

(大多数 SSH 教程不包括家庭 NAT,因为它是一个非常通用的东西,而不是严格的 SSH 设置的一部分。只是假设如果有人想允许通过 IPv4 连接到家庭网络,那么他们已经知道什么是端口转发以及它需要如何配置 - 为 SSH、Minecraft 或 BitTorrent 或其他任何东西做这件事没有区别。

此外,许多 SSH 教程更多地针对开发人员和一般想要连接到具有自己公共 IPv4 地址的 VPS 的人。这与您尝试连接到朋友的 PC 略有不同。)