通过 SSH 连接到 Linux 服务器最基本的是使用密码登录,这种方式易于使用且不需要进行过多的配置,但其安全性是受到挑战的。虽然可以结合 Fail2ban 使用来增强其安全性,但接下来要讨论的是 SSH 密钥登录,因为这种方式似乎也不逊色。
添加用户
Linux 系统中,root
用户拥有系统的所有特权,并且可以执行任何命令,出于安全考虑,建议不要使用 root
执行日常任务。下面命令将添加一个名为 exaple_user
的用户,执行命令前应替换为所需的用户名。
1 | adduser example_user |
设置用户密码。
1 | passwd example_user |
授予用户 sudo 特权
打开 /etc/sudoers
文件。
1 | visudo |
查找如下的行。
1 | root ALL=(ALL) ALL |
在其下面添加一行以下内容。
1 | example_user ALL=(ALL) ALL |
生成 SSH 密钥
如果还没有 SSH 密钥,则替换下面命令中的电子邮件地址,在本地计算机中使用 Git Bash 生成密钥。
1 | ssh-keygen -t ed25519 -C "[email protected]" |
推荐使用 Ed25519
类型的密钥。如果系统不支持,则改用以下的 RSA
类型。
1 | ssh-keygen -t rsa -b 4096 -C "[email protected]" |
将 SSH 密钥添加到 Linux 服务器
将 SSH 密钥添加到 example_user
用户的主目录中,假设服务器的 IP 地址为 192.168.1.6
。
1 | ssh-copy-id [email protected] |
使用 exaple_user
用户登录服务器,如果生成 SSH 密钥时未设置密码,则直接登录,如果设置了密码,则输入私钥的密码进行登录。
1 | ssh [email protected] |
配置 SSH
打开 /etc/ssh/sshd_config
文件,查找 PermitRootLogin
和 PasswordAuthentication
项并修改。
- 禁止
root
用户登录:1
PermitRootLogin no
- 禁止使用密码登录:
1
PasswordAuthentication no