介绍下在Windows和Linux分别用SSH auth认证方式连接Linux服务器的方法。为了更安全,请把服务器上的密码认证方式关掉吧,当然,在关掉之前,请确认能用密钥认证连接上去,不然的话,就悲剧了。解决方法也是有的,如Linode的Ajax Console,可以输入密码进入,这就要求应该把Linode的用户名和密码也设置的不容易猜到。在密码设置安全的情况下,其它的安全工作就交给Linode吧。而VPS的安全工作还是需要我们自己做的。
一、sshd配置文件
vim /etc/ssh/sshd_config Protocol 2 ServerKeyBits 1024 PermitRootLogin no PasswordAuthentication no PermitEmptyPasswords no
AuthorizedKeysFile .ssh/authorized_keys这句,是为什么要把id_rsa.pub改成这个文件名的原因,可以改成其它的。
二、两种生成密钥的方式
在下面全程处理其间,用密码认证登陆的窗口不要关闭。
1、在Linux服务器下生成密钥
ssh-keygen -t rsa
检查一下是否生成
cd ~/.ssh/ ls
正常情况下有两文件,id_rsa和id_rsa.pub。其中id_rsa.pub是公钥文件,需要放在服务器上的。id_rsa是私钥,下载下来备用。
用puttykeygen.exe程序,导入id_rsa,然后生成putty可以使用的私钥。
2、在Putty里生成
打开Puttykengen.exe程序,点击生成,然后在空白处移动鼠标,生成密钥。生成成功之后,在一文本框里的文件直接得到到服务器上。
vim ~/.ssh/authorized_keys
如果复制到记事本,然后再粘贴的话,格式会改变。保存退出。
点保存私钥,把生成的ppk文件放在putty目录。
为了能在Linux下用该私钥,还请在菜单 转换->导出openssh密钥,文件名id_rsa。
三、分别在Windows和Linux下连接
还是不要关闭密码连接的putty客户端。
1、Windows连接
个人感觉,在Windows里最好用的还是Putty,建议下载Putty中文版,还是便携的。点击这里下载。
用Putty,在连接connect->ssh->认证auth里输入文件名.ppk即可。(要便携)
2、Linux连接
把下载的id_rsa文件,放到~/.ssh/目录下,然后更改权限为400。只要不被组成员和其它成员有权限即可。
连接用终端
ssh 用户名@服务器
如果你的Linux与服务器的用户名相同,可以直接ssh 服务器。
四、注意
上面,一直在警示不要关闭密码连接的putty客户端。因为如果因为权限的问题或其它问题导致密钥方式连接不上,就悲剧了。如果出现问题:
cat /etc/log/secure
一般在客户端会提示:server-refused-our-key
查看到底是什么问题,一般来说是因为权限的原因,可以检查 /home/用户名,/home/用户名/.ssh,和/home/用户名/.ssh/authorized_keys看权限是否输入正确。
当然,在上面的ssh配置,可以把
PasswordAuthentication no 改成 #PasswordAuthentication no
后,一直到密钥认证可以连接为止,再修改回来,重启sshd服务。
我的Linode推荐链接:http://www.linode.com/?r=23088caa5bc161f4f9499c969075436e03465e6a
看看哪些用户可以在终端登陆,把不需要终端登陆的用户禁掉吧,即把 shell改成/sbin/nologin,需要登陆的用户就改成ssh密钥认证。
下面是我的一Vps日志信息,多么的严重啊,正在玩猜猜猜呢。
cat /var/log/secure | grep "Invalid" 2010-10-24T13:49:53.049759+08:00 server sshd[997]: Invalid user admin from 72.46.126.20 2010-10-24T13:49:55.604691+08:00 server sshd[1004]: Invalid user test from 72.46.126.20 2010-10-24T13:50:00.922369+08:00 server sshd[1008]: Invalid user backup from 72.46.126.20 2010-10-24T13:50:03.911972+08:00 server sshd[1010]: Invalid user guest from 72.46.126.20 2010-10-26T04:22:49.634938+08:00 server sshd[9398]: Invalid user oracle from 59.151.119.180 2010-10-26T04:22:51.356569+08:00 server sshd[9400]: Invalid user test from 59.151.119.180 2010-10-26T04:22:53.077738+08:00 server sshd[9402]: Invalid user test from 59.151.119.180 2010-10-26T04:22:54.807528+08:00 server sshd[9404]: Invalid user test from 59.151.119.180 2010-10-26T04:22:56.536495+08:00 server sshd[9406]: Invalid user test from 59.151.119.180 2010-10-26T04:22:58.265747+08:00 server sshd[9408]: Invalid user test from 59.151.119.180 2010-10-26T04:22:59.987859+08:00 server sshd[9410]: Invalid user test from 59.151.119.180 2010-10-26T04:23:01.717557+08:00 server sshd[9412]: Invalid user test from 59.151.119.180 2010-10-26T04:23:03.918525+08:00 server sshd[9414]: Invalid user test from 59.151.119.180 2010-10-26T04:23:09.008367+08:00 server sshd[9416]: Invalid user user from 59.151.119.180 2010-10-26T04:23:10.730715+08:00 server sshd[9418]: Invalid user user from 59.151.119.180 2010-10-26T04:23:12.456085+08:00 server sshd[9420]: Invalid user user from 59.151.119.180 2010-10-26T04:23:14.185438+08:00 server sshd[9422]: Invalid user user from 59.151.119.180 2010-10-26T04:23:15.914612+08:00 server sshd[9424]: Invalid user oracle from 59.151.119.180 2010-10-26T04:23:17.644185+08:00 server sshd[9426]: Invalid user oracle from 59.151.119.180 2010-10-26T04:23:19.371199+08:00 server sshd[9428]: Invalid user oracle from 59.151.119.180 2010-10-26T05:38:02.172549+08:00 server sshd[10168]: Invalid user dasusr1 from 118.70.253.8 2010-10-26T05:38:03.689410+08:00 server sshd[10170]: Invalid user install from 118.70.253.8