随着PHP越来越流行Linux VPS/服务器的使用也越来越多Linux的安全问题也需要日渐加强如果你安装过DenyHosts并设置过邮件提醒你每天可能会受到数封DenyHosts Report将前来破解SSH密码的IP加入/etc/hostsdeny
Linux SSH登录有两种
使用密码验证登录
通常VPS或服务器开通后都是直接提供IP和root密码使用这种方式就是通过密码方式登录如果密码不够强壮而且没有安装DenyHosts之类的防止SSH密码破解的软件那么系统安全将存在很大的隐患
使用密钥验证登录
基于密钥的安全验证必须为用户自己创建一对密钥并把共有的密钥放在需要访问的服务器上当需要连接到SSH服务器上时客户端软件就会向服务器发出请求请求使用客户端的密钥进行安全验证服务器收到请求之后先在该用户的根目录下寻找共有密钥然后把它和发送过来的公有密钥进行比较如果两个密钥一致服务器就用公有的密钥加密“质询”并把它发送给客户端软件(puttyxshell等)客户端收到质询之后就可以用本地的私人密钥解密再把它发送给服务器这种方式是相当安全的
一生成密钥
因为puttygen生成的密钥有问题可能会出现“Server refused our key”最好使用XShell生成密钥或者在远程Linux VPS/服务器生成密钥
在Linux远程服务器生成密钥
登录远程Linux VPS/服务器执行
root@vpser:~# sshkeygen t rsa //先运行这个命令
Generating public/private rsa key pair
Enter file in which to save the key (/root/ssh/id_rsa): //直接回车
Created directory ‘/root/ssh’
Enter passphrase (empty for no passphrase): //输入密钥密码
Enter same passphrase again: //重复密钥密码
Your identification has been saved in /root/ssh/id_rsa //提示公钥和私钥已经存放在/root/ssh/目录下
Your public key has been saved in /root/ssh/id_rsapub
The key fingerprint is:
::a::::::c:d:c:::::dd root@vpsernet
The key’s randomart image is:
+–[ RSA ]—+
|=&@Bo+o oo |
|=o=E o o |
| |
| |
| S |
| |
| |
| |
| |
+—————–+
root@vpser:~#
将/root/ssh/下面的id_rsa和id_rsdpub妥善保存
使用XShell生成密钥
Xshell是一款Windows下面功能强大的SSH客户端能够按分类保存N多会话支持Tab支持多密钥管理等等管理比较多的VPS/服务器使用XShell算是比较方便的推荐使用
下载XShell安装运行XShell点击菜单Tool >User Key Generation Wizard出现如下提示
点击Save as file将密钥保存为id_rsapub
二将密钥添加到远程Linux服务器
用winscp将id_rsapub文件上传到/root/ssh/下面(如果没有则创建此目录)并重命名为authorized_keys(如果是在Linux服务器上生成的密钥直接执行mv /root/ssh/id_rsapub /root/ssh/authorized_keys)再执行chmod /root/ssh/authorized_keys 修改权限
修改/etc/ssh/sshd_config 文件将RSAAuthentication 和 PubkeyAuthentication 后面的值都改成yes 保存
重启sshd服务Debian/Ubuntu执行/etc/initd/ssh restart ;CentOS执行/etc/initd/sshd restart
三客户端测试使用密钥登录
使用putty登录
putty使用的私钥文件和Linux服务器或XShell的私钥格式不同如果使用putty的话需要将Linux主机上生成的id_rsa文件下载的本地运行putty压缩包里面的puttygenexe选择Conversions>Import key选择私钥文件id_rsa输入密钥文件的密码会出现如下界面
点击“Save Private Key”将私钥保存为id_rsappk
运行putty在Host Name填写root@主机名或ip
如果设置了密钥密码出现Passphrase for key “importedopensshkey”时输入密钥密码
如果设置没问题就会登录成功出现用户提示符
XShell登录
运行XShell选择菜单File>New按如下提示填写
打开创建好的Session
如果设置没问题就会登录成功出现用户提示符
Linux客户端登录测试
在Linux客户端执行chmod /root/id_rsa 再执行ssh root@wwwvpsernet i /root/id_rsa /root/id_rsa为私钥文件第一次链接可能会提示确认输入yes即可再按提示输入密钥密码没有问题就会出现用户提示符
四修改远程Linux服务器sshd服务配置
修改/etc/ssh/sshd_config 文件
将PasswordAuthentication yes 修改成 PasswordAuthentication no
重启sshd服务
Debian/Ubuntu执行/etc/initd/ssh restart ;CentOS执行/etc/initd/sshd restart
ok设置完成
再提醒一下一定要保存好Putty私钥文件id_rsappk或Linux服务器下载下来的id_rsa私钥文件
可我,仍在旅行的路上徘徊。等待着每一辆经过的车,让我走到更远的地方。