有时候我们希望不用每次登录linux服务器都要输入密码,那么这个时候可以选择ssh密钥登录,就是rsa公钥放到服务器上,私钥放在客户端上,每次登录的时候,用密钥登录;这样更方便也更安全
- 先生成一个rsa密钥对
[root@VM_57_158_centos ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
7e:7a:29:07:e5:4f:05:b5:8f:98:66:b3:1b:77:71:1b root@VM_57_158_centos
The key's randomart image is:
+--[ RSA 2048]----+
| .. |
| . . |
| .. |
| . o.o |
| So *..Eo|
| .. .o.o =|
| ...+o ...|
| .o+ .+ . |
| .+ . |
+-----------------+
默认生成的密钥文件在root/.ssh目录下
- 检查下.ssh目录下authorized_keys文件是否存在,没有的话,创建一个,然后将id_rsa.pub的内容追加到authorized_keys文件尾
cd .ssh
touch authorized_keys
cat id_rsa.pub >> authorized_keys -- 将id_rsa.pub的内容追加到authorized_keys
修改.ssh的权限为700, authorized_keys的权限为600或者更严格的400,否则登录的时候会提示server refuse you key,
cd ..
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
如果你要设置的用户不是root,比如是git之类的
那么你要设置的.ssh目录应该是 /home/git/.ssh, 并且要将.ssh目录和authorized_keys文件的文件所有者改为git
chown -R git:git .ssh
否则还是登陆不了
- 修改下ssh的配置
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
这里有一点很重要,在你配置密钥登录成功之前,千万不要太自信将
PasswordAuthentication 设置no,否则你密钥登录不了,然后又禁止密码登录,就悲剧了
在密钥登录设置成功之后,可以将PasswordAuthentication 设置为no,禁用密码登录了,比较安全
- 将私钥文件id_rsa拷贝到你的客户端
如果你是要在windows上使用putty客户端登陆linux服务器
那么你还需要将这个私钥稍微转换下
打开putty key generator 工具
File -> Load private key, 然后点save private key, 就转换完毕,window下私钥一般以.ppk后缀结尾,比如另存为id_rsa.ppk - putty密钥登录
使用putty登录的时候,填好服务器地址之后,在
Connection -> Data 界面,Auto-login username 填入你的用户名
Connection -> SSh -> Auth 界面,Private key file for authentication, browse选择你的私钥文件id_rsa.ppk,
然后你可以把这些配置save下,以后就不用每次都配置一遍;最后点open, 当当当当,直接就登入进去了