如何生成用于无需密码登录服务器的 ssh 密钥

jus*_*tin 3 ssh key ssh-keys

我在亚马逊 AWS 上使用过服务器,他们向我发送了一个公钥 .pem 文件,当我 ssh 进入时,我所要做的就是:

ssh -i key.pem user@server
Run Code Online (Sandbox Code Playgroud)

我现在有一个自己的服务器,并试图弄清楚如何使用我的服务器来做到这一点,以便我可以通过 ssh 自动向我的服务器发送命令。

我想我需要在我的服务器上生成这个密钥并将它复制到我的客户端机器上。如何生成此密钥?

小智 5

在客户机上,你打算登录,运行ssh-keygen。要获得快速简便的键,只需在所有问题上按 Enter。这将在 ~/.ssh 中创建一个密钥对。具体来说,~/.ssh/id_rsa 是您的私钥(请妥善保管),而 ~/.ssh/id_rsa.pub 是您的公钥(可以分发)。

将您的公钥 (~/.ssh/id_rsa.pub) 复制到您要登录的服务器(例如scp ~/.ssh/id_rsa.pub me@myserver:。在服务器上,运行cat id_rsa.pub >> .ssh/authorized_keys。要确保它具有正确的权限,您可以运行chmod 644 ~/.ssh/authorized_keys。此外,您可以现在删除您复制的 id_rsa.pub 文件。

就是这样!您应该从客户端到服务器进行无密码登录。如果您想要从服务器到客户端的无密码登录,您必须在交换客户端和服务器的情况下重复该过程。

笔记:

  1. 如果 ~/.ssh 目录在您的服务器上不存在,创建它的最佳方法是从服务器 ssh 到其他机器(例如客户端)。这将确保它具有正确的权限。
  2. 如果您对有人访问客户端感到偏执,您可以使用密码保护密钥(运行时的提示之一ssh-keygen),但是您每次登录时都必须输入该密码。此问题的解决方案是使用ssh 代理。