29.3 关于SSH公钥认证
SSH公钥认证是一种非常安全且免口令的认证方式。关于公钥认证的原理,维基百科上的这个条目是一个很好的起点:
http://en.wikipedia.org/wiki/Public-key_cryptography
为实现公钥认证,作为认证的客户端一方需要拥有两个文件,即公钥/私钥对。一般公钥/私钥对文件创建在用户的主目录下的.ssh目录中。如果用户主目录下不存在.ssh目录,说明SSH公钥/私钥对尚未创建。可以用下面的这个命令创建:
$ssh-keygen
该命令会在用户主目录下创建.ssh目录,并在其中创建两个文件:
id_rsa
私钥文件。是基于RSA算法创建的。该私钥文件要妥善保管不要泄漏。
id_rsa.pub
公钥文件。和id_rsa文件是一对儿,该文件作为公钥文件可以公开。
创建了自己的公钥/私钥对后,就可以使用下面的命令,实现无口令登录远程服务器,即用公钥认证取代口令认证。
$ssh-copy-id-i.ssh/id_rsa.pub<user>@<server>
说明:
该命令会提示输入用户user在server上的SSH登录口令。
此命令执行成功后,再以user用户用ssh命令登录server远程主机时,不必输入口令可直接登录。
该命令实际上是将.ssh/id_rsa.pub公钥文件追加到远程主机server的user主目录下的.ssh/authorized_keys文件中。
检查公钥认证是否生效,通过ssh命令连接远程主机,正常的话应该直接登录成功。如果要求输入口令则表明公钥认证配置存在问题。如果SSH登录存在问题,可以通过查看服务器端的/var/log/auth.log日志文件进行诊断。