SSH 使用密钥文件登录 Linux 服务器
平时在 SSH 登录服务器后,经常会看到有多少次登录失败尝试的提示。这些大多是网上自动扫描破解器弄的,密码弱的很容易中招。要解决这个问题,除增加密码强度外。更好方法是采用密钥对认证方式。
要启用密钥文件登录方式,首先需创建密钥对,然后在 Linux 服务器端配置公钥,之后便可通过私钥文件登录。下面介绍具体配置流程。
创建 SSH 密钥对文件
在 Linux 系统上创建
大多 Linux 发行版系统自带 OpenSSH 软件,可以很方便地生成密钥对。
1. SSH 登录服务器,运行 ssh-keygen -t rsa -b 4096
命令生成密钥。接着提示选择密钥存储目录,直接按 Enter 键使用默认目录。
# ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):
2. 提示是否为私钥文件设置保护密码(设置后 SSH 登录除了验证私钥文件,还需输入密码,等于二重认证)。如果不设置则直接 Enter 两次。
Enter passphrase (empty for no passphrase): Enter same passphrase again:
3. 显示密钥生成结果,文件存储在 /root/.ssh/
目录下,id_rsa
是私钥文件,id_rsa.pub
是公钥文件。使用 SFTP 工具下载到本地保存。或直接用 cat
命令查看文件内容,复制到记事本保存(避免使用 .doc 文档存储,字符问题可能导致内容错误)。之后删除在服务器上的密钥文件。
Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:FNljtsS/cQueU3plPIPgQIwDMupDSMqHEHyuJzxFDW4 root@vpsuse The key's randomart image is: +---[RSA 4096]----+ |+o +o.. == | |*.+oo. o.+B. | |o=+E o+o+. .. | |o oo . ..+.oo+| |.oo S . O +o| | =.. * o | | + o | | | | | +----[SHA256]-----+
在 Windows 系统上创建
如果希望在 Windows 电脑上生成,需要额外下载软件,例如 PuTTYgen。
1. 运行 puttygen.exe
,选择 SSH-2(RSA) 类型密钥,密钥长度调至 4096,点击 Generate 生成。
2. 密钥生成过程中,需将鼠标移至软件空白区域反复移动,以产生随机数据。
3. 生成密钥后,可以选择为其设置保护密码,然后导出密钥文件备用。
Linux 服务器端配置公钥
SSH 登录服务器,用下面命令创建公钥文件。将之前生成的公钥文件内容复制进去保存。
mkdir ~/.ssh && vi ~/.ssh/authorized_keys
然后为公钥目录和密钥文件设置合适权限。
chmod 700 -R ~/.ssh && chmod 600 ~/.ssh/authorized_keys
到此,应该就能使用密钥文件登录服务器了。之后可考虑关闭密码认证方式(关闭前建议先验证密钥文件登录是否正常,以免因意外情况无法登录服务器)。
关闭 SSH 密码认证方法:编辑 vi /etc/ssh/sshd_config
配置文件,将 PasswordAuthentication
参数改为 no,systemctl restart sshd
重启 sshd 服务即可生效。
SSH 设置密钥文件登录
下面以 Xshell 客户端为例。修改 SSH 会话属性,将用户身份验证方式改为 Public Key。
如果你使用的是 PuTTY 客户端,则可以参考这篇文章设置。