对于远程使用 Ubuntu 或其他 Linux 服务器(例如 Debian、CentOS 和 Fedora)的用户,可以看看本文介绍的如何使用无密码 SSH 密钥登录远程 Ubuntu 20.04 服务器。

与用户密码登录相比,SSH 密钥认证更安全,因为只有拥有密钥的人才能连接,并且密钥通过不同的算法进行了很好的加密。它还通过无密码登录使 SSH 连接变得简单。

1. 在 Ubuntu Linux 中启用 SSH 服务:

如果您没有在远程服务器中启用 SSH 服务。您需要先连接到服务器,然后运行命令安装openssh:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get install openssh-server

对于 CentOS 和 Fedora 服务器,请改用linuxmi@linuxmi:~/www.linuxmi.com$ sudo dnf install openssh-server 命令。

安装完成后,通过命令启用并启动服务:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl enable ssh && sudo systemctl start ssh

最后通过运行命令验证 SSH 服务状态:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl status ssh

如果您看到该服务处于活动状态并正在运行,您可以在本地计算机上使用以下命令通过 SSH 远程连接服务器:

ssh user@server_ip

替换 user 和 server_ip。 如果不是默认的 22,则使用 -p port_number 指定端口号。

2、启用 SSH 密钥认证:

身份验证密钥在本地计算机中生成。 它们通常由私钥和公钥组成。 通过将公钥上传到远程 Linux 服务器,您将能够在本地机器上使用私钥进行 SSH 登录。

注意:本教程在 Ubuntu 本地计算机上进行了测试,但它应该适用于大多数 Linux,包括 Debian、Fedora、CentOS 和 Arch Linux。

1、安装 OpenSSH 客户端:

OpenSSH 客户端大多是开箱即用的。 如果没有,请在本地计算机上运行此命令进行安装:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install openssh-client

对于 CentOS 和 Fedora,请改用linuxmi@linuxmi:~/www.linuxmi.com$ sudo dnf install openssh openssh-clients

2、生成SSH密钥对:

SSH -keygen命令允许通过RSA、ECDSA和ED25519算法生成SSH密钥对。RSA得到了广泛的使用和最好的支持,而ED25519提供了更好的安全性和良好的性能。

a)、首先,在本地计算机终端窗口中创建并导航到.ssh目录:

mkdir -p ~/.ssh && cd ~/.ssh

b)、接下来,运行命令生成密钥对:

ssh-keygen -t ed25519 -f linuxmi_ed25519 -C “root@linuxmi”

在代码中,你可以用你喜欢的加密算法替换“ed25519”。” -f linuxmi_ed25519 “指定键名,“-C “root@linuxmi”” 是可选的。

c) 、出于安全原因,强烈建议对除您自己以外的其他用户设置无权限(甚至不可读):

chmod 600 ~/.ssh/linuxmi_ed25519*

将“linuxmi_ed25519”更改为您在上一步中设置的密钥名称。 最后有一个星号“*”,所以它也适用于“linuxmi_ed25519.pub”文件。

3、将公钥上传到主机服务器:

现在使用以下命令将公钥(在我的例子中为“linuxmi_ed25519.pub”)从本地计算机上传到远程服务器:

ssh-copy-id -i linuxmi_ed25519.pub linuxmi@192.168.150.216

如果监听端口不是默认的 22,不要记得加上‘-p number’。而且你需要输入远程用户密码才能上传密钥。

4、启用无密码SSH密钥登录:

首先通过 shell 命令运行“ssh-agent”:

eval ‘ssh-agent’

接下来,将 SSH 密钥添加到代理:

ssh-add linuxmi_ed25519

ssh-add linux_ed25519

如果提示:

Could not open a connection to your authentication agent.

请先执行如下命令

ssh-agent bash

之后,SSH 命令将无需输入认证密钥密码即可登录。

5、禁用SSH用户密码登录:

成功设置密钥认证后,您可以禁用用户密码登录,这样其他人就无法访问服务器!

首先,连接到远程服务器并运行命令来编辑 ssh 守护程序配置文件:

sudo nano /etc/ssh/sshd_config

接下来,取消注释“#PasswordAuthentication yes”行并将其值设置为 no,因此它将是:

PasswordAuthentication no

然后按 Ctrl+X,键入 y 并按 Enter 保存文件。

最后通过重新加载SSH

sudo systemctl reload ssh

无密码进入如下图:

 

OK,就这样。

发表评论