每次登录服务器都要输入密码,这点比较麻烦。使用ssh公钥登录机制可以直接登录,避免每次都输入密码的烦恼。
所谓ssh公钥登录机制即是:客户端电脑client产生加密用的公钥id_rsa.pub与私钥id_rsa,然后将公钥id_rsa.pub放到linux服务器,进行适当的配置之后,客户端电脑client以后每次登录服务器,都由公钥与私钥进行登录的安全验证,如果服务器公钥与客户端私钥配对无误就可以直接登录服务器,无需输入密码。
配置主要按照客户端与服务器端进行。
一、客户端
1.客户端产生公钥与私钥
利用ssh-keygen 命令产生,具体用法参考ssh-keygen --help 或者 man ssh-keygen。例如 ssh-keygen -t rsa -C "my-login-key",-t参数后面指定使用rsa加密算法,-C后面增加注释内容, -f 可以指定输出的公钥与私钥名称。此命令可以产生私钥id_rsa与公钥id_rsa.pub两个文件,可以用cat或者vim打开观察一下。
2.将公钥id_rsa.pub传到linux服务器
如果登录服务器的用户名是Jim,那么就把公钥id_rsa.pub的内容放到linux服务器的 /home/Jim/.ssh/authorized_keys 文件中。如果在文件夹 /home/Jim/.ssh/ 中没有authorized_keys文件则需要创建此文件。 把公钥传到服务器,可以 scp id_rsa.pub Jim@xx.xx.xx.xx:/home/Jim/.ssh/,就把公钥文件传到 /Jim/.ssh/ 里面了,然后再 cat id_rsa.pub >> authorized_keys 即可。
客户端配置到此完成。
二、服务器端
1.配置服务器端的公钥
假设要登陆的用户是Jim,并且Jim还在服务器有自己的文件夹/home/Jim/,在客户端配置的第2步已经把客户端电脑产生的公钥内容放到服务器的 /home/Jim/.ssh/authorized_key文件中。
2.在linux服务器上配置公钥登录功能
开通linux服务器的rsa验证以及公钥验证登录功能,还要指定存放公钥的位置即/home/Jim/.ssh/authorized_keys。主要涉及的操作是修改 /etc/ssh/ssh_config 或者 /etc/ssh/sshd_config 文件的内容。修改完成服务器的sshd_config 内容后,需要重启服务器的sshd服务就能进行免密登陆服务器了,重启命令可以用 systemctl restart sshd.service,重启成功后可以查看sshd服务的状态 systemctl status ssh.setvice, 如果重启出错,可以查看相关的日志。
至此服务器端也配置完成,可以免密码登录了。