我们经常会听到这样的一个说法:使用密码登录是不安全的。不错,管理服务器的时候如果使用root用户登录并且是使用密码验证来登录的话是很不安全的,经常看到一些团队的服务器管理是把各个服务器的密码设置得很复杂,有大小写,有下划线,有特殊符号,长度还很长;都以为这样就很安全了,别人就很难破自己的服务器登录密码了,但是不知道自己的一个很SB的做法让自己的服务器处于极度危险中:他把这些服务器的IP和用户名密码保存到了一个文件中,可以看到明文密码的。只要这个文件泄露就随便上服务器为所欲为了。那么有没有更好的办法来管理服务器呢?在这里我推荐一种方法:使用RSA的KEY来登录服务器,禁用服务器密码登录。
那么这个方案是怎么样实现的呢?在这里我们常用的远程服务器管理工具是SecureCRT,这个工具应该是运维同事用得比较多的工具了。首先在secureCRT里面生成RASKEY,按我下面的图片来操作,如果因为secureCRT的版本不同产生文字显示不同的话也不要紧,大概都是在那个位置。如下所示:
第一步:找到:工具->创建公钥
点下一步:
在这里要选择的是:下拉列表中的RAS这个值
然后会要求你输入通行短语,这个就是你使用这个创建的RASKEY要登录服务器时你用到的密码,这个密码是你自己设置的,跟服务器上原有的密码无关,最好就把注释也填一下,这样比较好看到这个KEY是属于哪一个人的。
下一步之后一般默认是1024,如果觉得1024们的密钥长度还不够安全,可以填上一个最大值:2048,然后点下一步
下一步之后会根据电脑的性能生成密钥,虽然说明上说会花比较长的时候,但是一般是一闪而过就没了,如果电脑比较慢的就把鼠标快速地移动一下就行了。
下一步之后这里要注意的是要选择OpenSSH的密钥格式,经常有人在最后一步搞错选了默认的。这里选择这个格式主要是为了以后使用其它的软件的时候要用到的KEY会比较方便。
最后点完成的时候会问你是不是使用这个刚生成的KEY作为一个全局的KEY,如果是新生成的话就“是”就行了。
到这里为止就生成了一个我们使用的RSA的KEY了。那接下来怎么样使用呢?
大家知道生成的密钥有公钥和私钥,私钥是放在你的电脑上的软件使用的,就是secureCRT用的,公钥是要放到服务器上面去的。那么要放到服务器的哪个目录中去呢?下面我们把公钥放到服务器上去。
一般来说我使用SecureCRT都是使用rz命令来上传文件的,如果你在服务器上输入rz回车没有出现上传文件选择器的话就是没有安装lrzsz这个软件,我的操作系统一般是CentOS,所以可以用下面的命令来安装上传下载相关的软件:
yum -y install lrzsz
这样就可以上传文件了。
我们需要上传公钥的路径在/root/.ssh/这个文件夹下,如果不存在这个文件夹的话可以先创建一下:
mkdir -p /root/.ssh/
chmod -R 600 /root/.ssh/
要记得给到正确的权限给这个文件夹,然后把公钥里的内容加到authorized_keys这个文件里去如果不存在这个文件的话也可以创建一个:
touchauthorized_keys
然后把Identity.pub这个文件的内容加到authorized_keys里面。
做完这些之后可以直接执行下面的命令让密钥登录生效同时禁止密码登录:
sed -i "s#PasswordAuthentication yes#PasswordAuthentication no#g" /etc/ssh/sshd_config
sed -i "s@#UseDNS yes@UseDNS no@" /etc/ssh/sshd_config
service sshd reload
也可以手动地打开/etc/ssh/sshd_config这个文件去修改相应的项。
完成之后就实现了RSA的KEY登录同时禁用密码登录了。在退出之前最好要先测试一下,先不要关掉当前的CRT窗口,新建一个标签去用KEY登录看能不能正常登录,如果正常了再把原先用密码登录的窗口关掉,如果不这样的话要是禁用密码生效了,但是KEY登录无效的话就杯具了,进不了服务器了。
RSA的KEY登录还可以实现服务器之间传输不需要输入密码,具体的实现可以参考我之前写的博客:www.codeo4.cn/archives/346
本篇暂时到这里结束,后续会有更多的关于RAS-KEY 的使用教程,内容包括使用RSAKEY通过SSH通道连接数据库,实现对不开放外网的3306端口连接管理MYSQL数据库。
使用ssh-key遇到的问题收集:
案例一:
从另一台服务器scp过来一整个root文件夹之后出现使用问题。无论如何设置都无法使用ssh-key登录,检查了各种上文提到的权限问题都没有办法解决。最后发现了root文件夹的权限有不同,copy源的服务器的文件夹的权限是777,把权限改为750就好了。偷懒的时候要注意权限啊!