CentOS 改密码登录为私钥验证

公网上的Linux服务器如果使用密码验证方式的话,过一段时间看/var/log/secure(安全日志文件),会有一大堆的登录尝试,虽然密码可以设置的很复杂,但被破解的机会还是有的。更安全的实践是:禁用密码登录,改为私钥验证登录,下面是简要操作说明:

1. 生成私钥(解释:其实是生成一对密码,一个私钥和一个对应的公钥,公钥用于上传到服务器上,告诉服务器该公钥对应的私钥可以信任,私钥用于客户端)
在Windows下:可以用putty里的PUTTYGEN.exe来生成。把最下面的位数改为2048,然后点击“Generate”按钮,在空白处晃动鼠标,直到进度条显示完成。然后点击“Save Private Key”,保存为一个PPK格式的文件(这个文件非常重要,等同于密码,千万不能泄露),同时建议在“Key passphrase”中填写用于保护私钥的密码(当然Confirm passphrase中需填写相同的密码),这样即使私钥文件泄露也有这个密码来保护私钥不被非法使用;这个文件就是用于putty及winscp等工具使用的私钥文件。公钥:点击“Save Public Key”并不能生成Linux需要的公钥格式,需要把屏幕上方文本框内的文本拷贝出来存到一个文本文件中,这个文件需要传到服务器上;

在Linux下可以用命令:ssh-keygen -t rsa;同样建议根据提示设置私钥的密码;如果未指定路径,缺省路径在~/.ssh下;生成两个文件id_rsa.pub是公钥,id_rsa是私钥;这里是指Linux做为客户端连接服务器的情况,生成的id_rsa.pub需要上传到服务器上.

2. 上传公钥到服务器并导入公钥
可以用任何自己熟悉的方式上传上一步生成的公钥文件到服务器上,然后执行:
cd ~/.ssh #如果没有这个文件夹,可手动创建
cat id_rsa.pub >> authorized_keys
解释:用哪个用户登录,公钥就会用于哪个用户
3. 客户端使用私钥访问服务器
Linux作为客户端:这种方式本人还没有验证,回头再补上;
Windows作为客户端(以Putty和WinSCP):
私钥格式转换:本人常用的两个工具是putty和WinSCP,需要用到PPK格式的私钥文件(Putty Private Key),如果在Linux下生成的私钥,需要转换为PPK格式才可以使用,下面是转换方式:运行puttygen,点击Conversions菜单项中的Import key(如果有私钥密码的话会提示输入密码),选择在Linux下生成的私钥文件(id_rsa),在puttygen的界面上点击Save private key按钮就可以把私钥转换为ppk的格式了。
登录设置:Putty中是在 Connection/SSH/Auth中选择私钥文件;WinSCP中在输入服务器地址的界面上就可以选择私钥文件;

如果一切顺利,Windows下可以使用Putty和WinSCP之类的工具通过私钥连接Linux服务器了。

4. 禁用密码登录
这很很重要的一步,要不前面的工作就白做了,下面是设置方法:
vi /etc/ssh/sshd_config
找到PasswordAuthentication,并把后面的yes改为no,然后重启ssh,service sshd restart

《CentOS 改密码登录为私钥验证》有1个想法

  1. 限制root用户不能远程登录:
    可以通过修改/etc/ssh/sshd_config文件,将其中的PermitRootLogin改成no,然后重新启动ssh服务就 可以了。/etc/rc.d/sshd restart

发表评论