Ubuntu 远程免密码登录设置

我们正常使用 ssh 远程登录服务器进行操作,需要输入用户名、服务器ip以及密码,当我们需要同时管理多个服务器的时候,每次都需要重复输入这些东西会显得特别麻烦和浪费时间,因此我们可以通过配置密钥来实现Ubuntu免密码登录。

实现这一目标五部,分别为:
- 本地客户端生成密钥对
- 上传密钥到服务器端
- 服务器端将密钥添加到 authorized_keys
- 本地客户端配置 ssh,添加服务器别名
- 测试

如果客户端是使用 MacOS 或者 Linux 系统,可以直接在终端使用以下操作即可,如果 Window 系统,建议先安装 Git-Bash,Git-bash 自带 ssh 工具,在 Git-Bash 下,操作也和 Linux 或者 MacOS 系统一样。

本地客户端生成密钥对

在生成密钥对之前,我们可以先查看一下我们是否已经生成过密钥对,可以通过以下命令:

ls -la ~/.ssh

如果输出有 id_rsaid_rsa.pub,那么就证明之前曾经生成过密钥对,其中 id_rsa 是私钥,id_rsa.pub 是公钥,我们可以直接使用。如果没有看到这两个文件,那么请回忆是否自己命名的密钥对,如果没有或者已经忘记是否曾经生成过,那么久可以重新创建一个。方法如下:

ssh-keygen -t rsa -b 2048

执行命令后,会提示密钥存储位置,以及询问是否需要设置密码,一般我们可以一路按 Enter 确认即可完成密钥生成。

完成后我们再次查看 ~/.ssh 文件夹下是否由我们新创建的密钥即可。

上传密钥的服务器端

接下来,我们将我们创建好的公钥上传到服务器上,我们将会使用到 scp 命令。

scp ~/.ssh/id_rsa.pub <YOUR SERVER USERNAME>@<YOUR SERVER IP ADDRESS>:~

这里需要注意的是,我们需要上传的是公钥,其文件名为 id_rsa.pub,私钥是需要我们保密的,这里不要上传错。

服务器端将密钥添加到 authorized_keys

接下来,我们需要登录我们的服务器,然后将我们刚上传的公钥添加到 authorized_keys中。在添加之前,我们需要先做一下准备,具体如下:
- 检查是否存在 .ssh 文件
- 如果不存在需要自行创建
如果是刚安装的系统,以我的 Ubuntu 16.04.4 为例,默认的 ssh 是没有自动创建 .ssh 文件夹的,这需要我们自己创建。不同版本的系统或者以不同途径安装的 ssh 可能情况会有所不一样,请根据实际情况处理。

# 查看是否存来 .ssh 文件夹
ls -la ~
# 如果不存在,创建 .ssh 文件夹
mkdir .ssh
# 将公钥添加到 authorized_keys 文件中
cat id_rsa.pub >> ~/.ssh/authorized_keys

以上即完成操作,在 Ubuntu 16.04.4 的系统默认配置中,以上操作完成即可。然而,在一些不同版本的系统中,可能还需要配置以下 ssh 的配置,具体如下:
- 备份 /etc/ssh/sshd_config
- 编辑 /etc/ssh/sshd_config ,将 PubkeyAuthentication no 修改为 PubkeyAuthentication yes

扫描二维码关注公众号,回复: 12471358 查看本文章

本地客户端配置 ssh,添加服务器别名

完成上面的配置后,我们可以尝试在本地中尝试使用密钥登录看是否成功:

ssh -i ~/.ssh/id_rsa <YOUR SERVER NAME>@<YOUR SERVER IP ADDRESS>

如果配置正确就可以正常免密码登录。

为了解决需要管理多台服务器,不希望记住太多不同的用户名和地址的问题,我们还可以为设置别名登录,具体操作如下:
- 在本地 .ssh/ 文件夹下创建 config
- 向 config 中添加别名信息

# ~/.ssh/config 配置格式
Host  <YourServerAlias>
  HostName  <YourServerIPAddress>
  Port  <YourServerSSHPort>
  User  <YourServerUserName>
  IdentityFile  ~/.ssh/id_rsa

测试

完成所有配置后,我们可以测试一下配置是否正确:

ssh <Host Alias>

如果能正常免密码登录,说明配置成功,我们以后便可以通过这样直接输入服务器别名的方式快速登录服务器了。

猜你喜欢

转载自blog.csdn.net/weixin_37272286/article/details/80007649