最近通过查看服务器日志,发现有不少扫描 FTP 的行为,虽然我的 FTP 密码设置的足够安全,但是被破解的隐患还是存在的,于是就稍微折腾了一下,用更surety(used form a nominal expression)RSA 密钥方法登陆服务器,具体方法总结如下,供又需要的朋友参考。
第一步:通过命令产生密钥对
$ ssh-keygen -b 1024 -t rsa
执行完这个命令后,默认会在 ~/.ssh 下会生成 id_rsa 和 id_rsa.pub 密钥对,id_rsa是密钥 private key,id_rsa.pub 是公钥 public key (密钥类型 RSA,密钥长度 1024)。把 id_rsa.pub 复制为authorized_keys,放在需要登陆的 Linux 主机的 ~/.ssh 目录下
$ scp id_ras.pub hostname1:/home/username/.ssh/authorized_keys
这样就可以通过 SSH 不用密码登陆到主机上了。
安全起见,我们还需要设置一下 SSH,禁止用户通过密码登陆。编辑 /etc/ssh/sshd_config 文件,找到下面几行,均设置为 no。
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
第二步:把私钥转换成 Putty 能识别的格式。
我用的是 Win8 系统,登陆 SSH 使用的是 Putty,因为 ssh-keygen 生成的 SSH2 密匙和 Putty 的密匙格式不同,无法直接使用,必须用 puttygen.exe 转换一下。
如上图,先点击 load,加载从服务器上下载下来的私钥,然后点击 Save private key 保存成 Putty 需要的私钥文件。
第三步:设置 Putty 和 Pageant。
有了私钥文件,我们就可以很轻松的通过 Putty 登陆了,在 Putty 设置 >ssh>auth 中找到私钥文件的存储路径,然后返回 Sesion,在点击 open 按钮就可以登陆了。
至于 Filezilla,默认是不支持 SSH2 密钥登陆的,这时候我们需要用 Pageant 做一个密钥代理,方法很简单,下载 Pageant,然后点击 Add keys 添加需要用到的私钥。
然后 Filezilla 那边,协议选择 SFTP,登陆类型选择正常,输入以下用户名(密码不用填)就可以登陆了。
虽然密钥也会丢失,但是暴力破解的可能性不大,生成密钥的时候,建议设置一下密钥的密码,这样,即使别人拿到了你的密钥,没有密码还是用不了,安全上会更有保障。