免密登录
如果你使用的是 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论