介绍下在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