转载
原文地址:
http://blog.csdn.net/hunanchenxingyu/article/details/40544513
http://flysnowxf.iteye.com/blog/1567570
一般情况下,我们用ssh远程登录到服务器时,要输入用户名和密码。这对经常维护系统的人来说,很麻烦。怎样才能不用密码直接登录到远程的linux/unix服务器呢?ssh公钥认证可以解决这个问题。
公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。
在使用公钥认证之前,先检查一下服务器的ssh配置文件/etc/ssh/sshd_config
RSAAuthentication yes #启用 RSA 认证,默认为yes PubkeyAuthentication yes #启用公钥认证,默认为yes AuthorizedKeysFile .ssh/authorized_keys
然后再在客户机上生成公钥和私钥:
cd ~/.ssh #切换到ssh目录 ssh-keygen -t rsa #以rsa的加密方式生成秘钥对
此时出现:
Enter file in which to save the key (/home/client/.ssh/id_rsa):
直接按enter即可,或者自己命名一个文件来存储生成的秘钥对。(注意使用公钥连接服务器,默认指定的秘钥文件名为id_rsa和id_rsa.pub,如果指定其他名可能需要修改ssh配置文件)
将生成的公钥id_rsa.pub里的内容复制到服务端authorized_keys(新加一行)
重启ssh服务,到此即可通过公钥来访问服务器了
ssh可同时支持publickey和password两种授权方式,publickey默认不开启,需要配置为yes。
如果客户端不存在.ssh/id_rsa,则使用password授权;存在则使用publickey授权;如果publickey授权失败,依然会继续使用password授权。