传统的SSH服务器默认是使用的Linux用户进行认证,采用帐号密码认证必然存在密码被泄漏被爆破等威胁,最近咱无聊打算研究下网络安全领域的知识,也正打算才用证书方式认证我的相关服务器,WiFi网络等。
SSH才用公钥密钥认证,实际上就是使用的RSA方式进行公钥密钥认证,至于RSA是什么,如果有兴趣的朋友想了解可以移步至维基百科,传送门在这里:http://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95
接下来就开始说说具体操作步骤:
首先我们需要在服务器上为当前账户创建一个公钥密钥,通常来说应该是root,如果是其他的账户也许会比较麻烦。
执行命令:
ssh-keygen -t rsa
第一个提示是路径 默认即可,第二个提示输入passphrase,这个就是给这个密钥文件设置一个密码,在这里我强烈建议大家一定要设置,如果没有设置 密钥泄漏了什么的,就呵呵呵了。
输入完成以后 你会看见一个非常美丽又莫名其妙的图形,这就说明密钥公钥已经产生。
这个时候执行命令
cd ~/.ssh
ls
你会看见有几个文件 ,其中有2个文件特别重要 分别是 id_rsa 和 id_rsa.pub 前者为密钥,也就是我们登陆所需要的东西。 先通过SFTP或者其他方法下载下来进行保存(非常重要,如果忘记了,服务器没法登陆了可别怪我,我反正悲剧过一次 至于你信不信)
接下来执行这个命令
cat id_rsa.pub >> ~/.ssh/authorized_keys
将公钥文件复制一份 并改名为 authorized_keys
然后编辑ssh配置文件,通常来说配置文件是:/etc/ssh/sshd_config 当然不同的服务器可能不一样
修改下面这几个地方(我喜欢用nano 所以我用 Ctrl+W查询)
#设置公钥
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys#关闭密码认证 因为我们打算用公钥密钥来连接了
PasswordAuthentication no
配置好服务器以后 再次确认 密钥文件是否下载了,否则悲剧了别找我 重启SSH服务器 生效
#Debian/ubuntu :
/etc/init.d/ssh restart#CentOS
service sshd restart
重启完毕以后 就OK了,下次连接SSH的时候 已经是要求必须用证书认证了。
至于客户端如何连接,具体方法就是 将密钥导入到密钥管理器一类的东西里面,SSH软件过多,我这里就简单的说下 我用的 Bitvise SSH Client 和 FlashFXP
Bitvise SSH Client:
FlashFXP:
一切顺利你将会看见这些相当霸气的加密提示,这个时候你应该想说:我和我的小伙伴们都惊呆了。
如果是VPS的话一般都会有一个应急的SSH可以供登陆用
是的哟,我用的一个Linode的就有网站后台TTY。