RSA加密算法是一种非对称加密算法,也算的上目前最安全的加密算法,它理论基础是大数很难因式分解,目前能破译的最长密码是768位二进制,而一般我们采用的长度是2048位,所以还是很难很难破解。具体的算法原理可以参见RSA算法原理,现在需要知道的是这个算法有一个公钥一个私钥,公钥放在服务器上,私钥作为登录凭证自己保存。这里主要记录一下自己使用这个算法的过程:
- 通过命令
ssh-keygen -t rsa
生成私钥和公钥。
12345678Generating public/private rsa key pair.Enter file in which to save the key (/home/lm/.ssh/id_rsa): # 指定保存私钥的文件,默认就可以Enter passphrase (empty for no passphrase): # 对私钥再次加密,这不可以直接为空Enter same passphrase again:Your identification has been saved in /home/lm/.ssh/id_rsa.Your public key has been saved in /home/lm/.ssh/id_rsa.pub.# 如果想把私钥放到别的电脑上继续通过之前的公钥访问,新位置上保存的私钥权限应为400 - 然后把公钥(id_rsa.pub)利scp到服务器,在服务器上用户目录下新建一个
.ssh
文件夹,然后在.ssh
文件夹下新建文件authorized_keys
,然后执行cat id_rsa.pub >> authorized_keys
将自己的公钥文件追加到authorized_keys
文件中。 - 更改
sshd_config
配置文件:
123456789# sudo vim /etc/ssh/sshd_configRSAAuthentication yes #RSA认证PubkeyAuthentication yes #开启公钥验证AuthorizedKeysFile %h/.ssh/authorized_keys #验证文件路径PasswordAuthentication no #禁止密码认证PermitEmptyPasswords no #禁止空密码# 最后保存,重启sshd服务sudo service sshd restart - 然后就可以通过
ssh user@hostname
登录服务器而不用输入密码,同时由于禁止密码认证,在其他电脑上也不能用密码登录服务器,只能用rsa私钥来登录,提高了安全性。另外还可以更改sshd_config
文件中的默认port:22
来提高安全性。
Reference:
1 2 |
https://www.findhao.net/easycoding/1714 |
在服务器端,.ssh文件夹的权限为700;authorized_keys文件的权限为644;即:
chmod 700 .ssh
chmod 644 authorized_keys