返回介绍

免密登录

发布于 2025-01-02 21:53:58 字数 1978 浏览 0 评论 0 收藏 0

如果你使用的是 Vagrant 虚拟机,那么可以跳过本节,因为你的虚拟机已正确配置为使用名为 ubuntu 的非 root 帐户,Vagrant 不用输入密码就可以自动登录。

要是你使用的是虚拟服务器,则建议创建一个常规用户来完成你的部署工作,并配置此帐户以便在不使用密码的情况下登录,这么做最初看起来似乎是一个糟糕的主意, 之后你会发现它不仅更方便,而且更安全。

我将创建一个名为 ubuntu 的用户帐户(如果你愿意,可以使用其他名称)。 要创建这个用户,请使用前一节中的 ssh 指令登录到你的服务器的 root 帐户,然后键入以下命令来创建用户,给它 sudo 权限并最终切换到它:

$ adduser --gecos "" ubuntu
$ usermod -aG sudo ubuntu
$ su ubuntu

现在我要配置这个新的 ubuntu 帐户来使用 public key 认证,以便你可以免密登录。

先不管服务器上打开的终端会话,然后在本地计算机上启动第二个终端。 如果你使用的是 Windows,这需要是可以访问 ssh 命令的终端,所以它可能是一个 bash 或者类似的提示符的终端,而不是本地的 Windows 终端。 在该终端会话中,检查 ~/.ssh 目录的内容:

$ ls ~/.ssh
id_rsa  id_rsa.pub

如果目录列表显示如上所述的名为 id_rsa 和 id_rsa.pub 的文件,那么你已经有一个密钥。 如果没有这两个文件,或者根本没有 ~/.ssh 目录,则你需要运行以下命令(也是 OpenSSH 工具集的一部分)来创建 SSH 密钥对:

$ ssh-keygen

此应用程序将提示你输入一些内容,为此我建议你在所有提示中按 Enter 以接受默认设置。 你当然也可以做一些设置,如果你知道这么做意味着什么的话。

运行此命令后,应该有上面列出的两个文件了。 文件 id_rsa.pub 是你的 公钥 ,这是一个你将提供给第三方的文件,用于识别你的身份。 id_rsa 文件是你的 私钥 ,不应与任何人共享。

你现在需要将公钥配置为服务器中的 授权主机 。 在你自己的计算机上打开的终端上,将公钥打印到屏幕上:

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjw....F8Xv4f/0+7WT miguel@miguelspc

这将是一个非常长的字符序列,显示时可能跨越多行(但实际上只有一行)。 你需要将此数据复制到剪贴板,然后切换回远程服务器上的终端,你将在其中运行以下命令来存储公钥:

$ echo <paste-your-key-here> >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

免密登录现在应该可以工作了。 背后逻辑是,你机器上的 ssh 会用私钥执行加密操作来向服务器标识自己。 然后服务器使用你的公钥验证操作是否有效。

你现在可以注销 ubuntu 会话,然后注销 root 会话,然后尝试直接登录到 ubuntu 帐户:

$ ssh ubuntu@<server-ip-address>

这一次不用输入密码就登录了!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文