1. 密钥认证的概念及优势
密钥认证是一种基于非对称加密算法的登录认证方式,在Linux系统中被广泛使用。相比于传统的用户名和密码认证方式,密钥认证具有以下优势:
安全性更高:在传统的用户名和密码认证方式中,密码容易被破解或者泄露,在网络环境中存在一定的风险。而密钥认证通过使用非对称加密算法生成公钥和私钥,可以提供更高的安全性。
免除记忆密码的负担:用户名和密码组合过于复杂,需要用户记忆多个不同的密码,容易导致用户遗忘密码或者使用相同密码的情况。而密钥认证通过使用密钥对进行认证,免去记忆密码的负担。
易于管理:在大规模系统中,管理员需要管理大量用户的登录认证信息,包括重置密码、设置密码策略等。密钥认证可以简化这个过程,管理员只需要将用户的公钥存储在服务器上即可。
2. 生成密钥对
在使用密钥认证登录之前,首先需要生成密钥对,包括公钥和私钥。
2.1 生成密钥对的命令
ssh-keygen
运行以上命令后,系统会在用户的~/.ssh
目录下生成密钥对文件,默认文件名为id_rsa
和id_rsa.pub
。
私钥id_rsa
需要设置合适的权限,一般为600,可以使用以下命令修改:
chmod 600 ~/.ssh/id_rsa
公钥id_rsa.pub
是用来传递给服务器的,可以使用以下命令将其内容保存到文件:
cat ~/.ssh/id_rsa.pub >> authorized_keys
2.2 密钥对的保管
密钥对的保管非常重要,私钥id_rsa
是用户的敏感信息,不能泄露给他人。建议将私钥存储在受保护的本地机器上,可以使用加密的存储介质,如USB口令。
3. 配置服务器
在服务器端,需要将用户的公钥添加到~/.ssh/authorized_keys
文件中。
3.1 创建authorized_keys
文件
touch ~/.ssh/authorized_keys
运行以上命令创建authorized_keys
文件。
3.2 将公钥添加到authorized_keys
文件中
在本地使用ssh-copy-id
命令可以将公钥添加到服务器的authorized_keys
文件中。
ssh-copy-id username@server_ip
在以上命令中,username
是服务器上的用户名,server_ip
是服务器的IP地址或域名。
如果没有安装ssh-copy-id
命令,也可以手动将公钥内容添加到authorized_keys
文件中。
添加公钥后,需要确保~/.ssh
目录权限为700,authorized_keys
文件权限为600。
4. 使用密钥认证登录
在完成密钥对的生成和服务器的配置后,就可以使用密钥认证登录了。
ssh username@server_ip
在以上命令中,username
是服务器上的用户名,server_ip
是服务器的IP地址或域名。
在第一次登录时,系统会提示用户是否将服务器的公钥添加到本地的known_hosts
文件中,需要确认并输入密码进行确认。确认后,系统会将服务器的公钥信息保存在本地,以后的登录过程将不再需要输入密码。
5. 安全性增强
为了进一步增强密钥认证的安全性,可以采取以下措施:
5.1 设置登录密码
为了防止私钥泄露的情况下仍然可以登录,可以为私钥设置登录密码。可以使用以下命令为私钥添加密码:
ssh-keygen -p
以上命令会提示用户输入当前密码和新密码,如果不需要为私钥添加密码,可以直接按回车键。
5.2 禁用密码登录
为了完全依赖密钥认证登录,可以禁用密码登录。可以通过修改SSH服务器的配置文件/etc/ssh/sshd_config
来实现:
PasswordAuthentication no
修改完成后,需要重启SSH服务器才能生效。
6. 结语
通过使用密钥认证登录,可以提高Linux系统的登录安全性。密钥认证不仅可以提供更高的安全性,还可以减轻用户的记忆负担。但是在使用密钥认证之前,需要严格保管私钥,避免私钥的泄露。