更改SSH登录方式为仅密钥登录

VPS买来之后,除了最初的一段时间配置Web Server、SSH等,之后我的懒惰就占据了上风。加上一定程度上的新鲜事物三分热度,自己对Linux使用不够熟悉,以及开发能力太弱,就一直闲置了。难道自己今天提前来了学校,就想静心做点事,写个东西更新下,也不要显得这个Blog跟死了一样。(写完发现我废话好多啊)

当初配置SSH之后,一贯作风就是默认配置,印象中是几乎什么都没有改。忘了因为什么事情,我看了一下系统的日志文件,/etc/auth.log文件中一把一把的记录了某几个ip尝试进行root登陆,着实把我吓了一跳。当时的第一件事是,赶紧把SSH的端口给改了,毕竟默认的端口太容易被一些自动化的黑客脚本检测到。然后装了DenyHosts,来防止被暴力破解。之后的一段时间相安无事(至少我认为……)

虽然很早就知道使用私钥/公钥进行SSH登录的安全性能提高不少,不过因为担心私钥文件保存,以及一不小心配置错把自己给denyhosts了,就一直没管。直到今天……

在Win系统上,我用Putty作为SSH的客户端使用,Linux上当然是使用OpenSSH了。Putty附带有Puttygen程序,可以用户生成密钥对,Linux上则要使用ssh-keygen来产生密钥。

Win:使用Puttygen,Generate密钥,在生成的过程中,会要求你在窗口内移动鼠标,这是为了采集密钥数据,之后将Private Key妥善保管,Public Key可以通过Load Private Key来显示。然后将Public Key保存到你的服务器上的~/.ssh/authorized_keys文件中。下面的那篇Wiki中,有介绍对密钥对权限的相关设置,如果不符,也需要进行更改,特别是新建的文件夹和文件的权限。

Linux:具体的配置步骤参见这篇Wiki。在配置后还附带有RSA密钥加密的原理解释,可以作为扩展。当然,我们也可以在服务器上生成密钥对,然后将私钥传到客户机上,不过记得要把服务器上的私钥删除。

到这里,就已经可以使用密钥进行登录了,但是服务器依然接受使用PasswordAuthentication密码登录。我们修改配置文件/etc/ssh/sshd_config进行相关配置:

到此,SSH就只接受使用密钥进行验证的登录请求了。所有非密钥的登录都会被直接拒绝。提高安全性的同时,也要记得保存好你的私钥文件,否则可能无法登录服务器了啊~

发表评论

电子邮件地址不会被公开。 必填项已用*标注