本文共 1600 字,大约阅读时间需要 5 分钟。
在SSH中使用密码验证被认为是一种不好的习惯。SSH密钥能够实现无需向远程服务器发送密码即可完成身份验证,大大提升了安全性。以下是为Linux服务器配置SSH密钥的简单步骤。
在开始配置之前,需要确认服务器上允许登录的用户。可以通过以下命令来查看用户组和用户信息:
查看用户组:使用cat /etc/group
命令。
/etc/group
文件记录了用户组的信息,包含用户组名称、密码、GID以及用户列表。每一行的四个字段依次为:用户组名称、用户组密码、用户组ID、用户列表(用户之间用逗号分隔)。例如:www:x:500:
这里的www
是用户组名称,x
是用户组密码,500
是用户组ID,最后一个字段为空表示用户组使用的是GID作为用户名。
查看用户信息:使用cat /etc/passwd
命令。
/etc/passwd
文件记录了用户的详细信息,包含7个字段:用户名、密码、用户ID、用户组ID、未知字段、主目录、登录Shell。例如:root:x:0:0:root:/root:/bin/bashwww:x:500:500::/home/www:/sbin/nologin
第三个字段(用户ID)大于500的用户通常是非系统用户。第七个字段如果是nologin
,表示该用户无法登录。
创建用户组:
使用groupadd
命令创建用户组。例如:groupadd www
这将创建一个名为www
的用户组。
创建用户账号:
使用useradd
命令创建用户,并指定所属用户组。例如:useradd -g www wwwuser
这将创建一个名为wwwuser
的用户账号,并将其分配到www
用户组。
设置用户密码:
使用passwd
命令为新用户设置密码。例如:passwd wwwuser
输入并确认密码。随后,使用root
账号登录服务器,设置wwwuser
的密码。
root
账号登录为了避免因误操作或攻击导致的安全风险,可以禁止root
账号登录。修改/etc/ssh/sshd_config
文件中的PermitRootLogin
选项,设置为no
。然后重启SSH服务:
sudo systemctl restart sshd
此时,root
账号将无法直接登录。如果需要访问root
权限,可以先使用普通账号登录,然后使用sudo
命令切换。
生成SSH密钥:
使用ssh-keygen -t rsa
命令在用户账号目录下的.ssh
文件夹中生成新的SSH密钥对。ssh-keygen -t rsa
生成的密钥对包括id_rsa
和id_rsa.pub
两个文件。
上传公钥到服务器:
将生成的id_rsa.pub
文件复制到远程服务器,并将其重命名为authorized_keys
。然后将私钥id_rsa
文件添加到本地客户端的.ssh
文件夹中。禁用密码登录:
修改/etc/ssh/sshd_config
文件中的PasswordAuthentication
选项,设置为no
,然后重启SSH服务:sudo systemctl restart sshd
这样,SSH服务器将不再接受密码登录,只能通过SSH密钥进行认证。
本地测试:
使用生成的私钥文件尝试连接到远程服务器:ssh -i /path/to/id_rsa remoteuser@server.com
如果成功登录,说明SSH密钥配置正确。
服务器测试:
确保authorized_keys
文件正确地位于~remoteuser/.ssh
目录中,并且权限设置为600(读、写、属性可执行,否则可能导致拒绝登录)。通过以上步骤,您可以安全、高效地为Linux服务器配置SSH密钥登录,从而大大提升服务器的安全性。
转载地址:http://nnkfk.baihongyu.com/