在ssh中使用密码验证是一个坏习惯,ssh keys允许你不用给远程服务器发送密码就可以进行身份验证,大大提高安全性。接下来提供一个linxu服务器配置ssh key的简单步骤
- 检查你服务器上的用户以及用户组,确认允许登陆的用户
1)检查用户组,使用命令“cat /etc/group”
/etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组,那么这个用户就可以浏览root用户家目录的文件,如果root用户把某个文件 的读写执行权限开放,root用户组的所有用户都可以修改此文件,如果是可执行的文件(比如脚本),root用户组的用户也是可以执行的;
文件内容分析:
-bash-4.1# cat /etc/group www:x:500:
在/etc/group 中的每条记录分四个字段:第一字段:用户组名称;第二字段:用户组密码;第三字段:GID第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名
2)检查用户,使用命令“cat /etc/passwd”
-bash-4.1# cat /etc/passwd root:x:0:0:root:/root:/bin/bash www:x:500:500::/home/www:/sbin/nologin
在/etc/passwd记录了7个字段:第一个字段用户名(www);第二个字段密码;第三个字段用户ID,第四个字段用户组ID,第五个字段未知,第六个字段个人文件夹目录,第七个字段登陆shell程序
看第三个参数,大于500的就是非系统用户,第七个字段,如果是nologin,则说明该用户不能登陆
- 为登陆的用户配置用户组和用户帐号
1)创建用户组。创建www用户组,目的是可以让nginx都有权限访问属于www组用户上传的代码文件。
groupadd www
2)创建用户,让该用户属于www组
useradd -g [group name] [account] 这样帐号就创建好了。等等,我们尝试用这个帐号登陆,竟然发现这个帐号无法登陆,因为我们不知道密码是什么。那么,使用root帐号给新建的帐号设置密码。
passwd [account]
-
禁止root帐号登陆 禁止root登陆,可以避免使用root帐号进行错误操作的时候带来昂贵的代价,比如执行rm -rf ./命令,少打了个“.”导致所有文件被删除。此外,还能避免外在攻击者扫描ssh服务器,并猜测你的密码。要禁止root登陆,步骤很简单。 设置/etc/ssh/sshd_config里的PermitRootLogin选项为no(默认为yes,允许root用户登陆),并重启sshd服务/etc/init.d/sshd restart 此时,root帐号就不能登陆了,如果要登陆root,先使用其他帐号登陆,使用su命令
-
配置使用SSH Keys登陆服务器 使用新建的帐号登陆服务器后,执行命令
ssh-keygen -t rsa
该命令会新建一个rsa的ssh key到帐号目录下的.ssh目录,该目录下一共生成2个文件:id_rsa和id_rsa.pub,将id_rsa.pub改名为authorized_keys,并且将id_rsa下载到连接服务器的客户端。测试可以使用ssh key登陆之后,需要禁用密码登陆。设置/etc/ssh/sshd_config里的PasswordAuthentication选项为 no(默认为yes,运行密码登陆),并重启sshd服务/etc/init.d/sshd restart
-
总结,一个比较安全的服务器用户设置就完成了