原理:使用所需用户登录客户端,使用ssh-keygen生成用户主机私钥和密钥,并把客户端公钥上传到服务器端固定的文件中。当客户端通过ssh访问服务器端时,服务器端会生成一个随机数并用客户端的公钥对随机数进行加密,并发给客户端。客户端收到加密数后在使用私钥解密,并将解密数传给服务器端,服务器端确认解密无误后就允许客户端进行连接了。


作用:使用ssh登录主机是不需要输入密码。可以把scp 的指令放置于 crontab 服务中, 让我们的系统透过 scp 直接在背景底下自行 定期的进行网络复制与备份。


应用示例:

            两台主机客户端ser1与服务器端ser2,ip地址分别为10.1.1.1与10.1.1.2。
            由于客户端ser1经常访问ser2主机,现需实现客户端ser1无需密码即可使用ssh登录ser2主机。

步骤:

    1、检查系统是否安装SSH服务与rsync服务(rsync是一个远程数据同步工具,可以通过网络快速同步多台主机间的文件)。若未安装需yum安装。

[root@ser1 ~]# rpm -qa |grep openssh 

openssh-server-5.3p1-20.el6.i686
openssh-5.3p1-20.el6.i686 
openssh-askpass-5.3p1-20.el6.i686 
openssh-clients-5.3p1-20.el6.i686

[root@ser1 ~]# rpm -qa |grep rsync 
rsync-3.0.6-5.el6.i686

    2、使用root用户登录,修改ssh配置文件

[ root@ser1 ~]# vi   /etc/ssh/sshd_config
RSAAuthentication yes                  //启用RSA验证
PubkeyAuthentication yes                  //启用公钥私钥配对验证方式
AuthorizedKeysFile         .ssh/authorized_keys           //公钥文件路径

    3、重启sshd

[root@ser1 ~]# service sshd restart

    4、使用无需密码登录的用户名登录,生成私钥和密钥。

[root@ser1 ~]# ssh-keygen   -t    rsa                 //这里使用的root登录,加密方式可使用rsa会dsa,默认为rsa。全部默认回车即可


[ root@ser1 ~]# ls -ld ~/.ssh; ls -l ~/.ssh          //查看是否生成公钥和私钥文件
drwx------. 2 root root 4096 2月 27 21:59   /root/.ssh 
-rw-------. 1 root root 1675 2月 27 21:58 id_rsa    //私钥
-rw-r--r--. 1 root root 401 2月 27 21:58 id_rsa.pub   //公钥

注:1、普通用户生成公钥文件在/home/用户名/.ssh/下。
       2、~/.ssh/ 目录必须要是 700 的权限才行。id_rsa必须为600且属于用户自己。否则密钥对比可能失败

    5、将客户端ser1生成的公钥档案数据上传到服务器ser2上

[root@ser1 ~]# scp    .ssh/id_rsa.pub       10.1.1.2:/root                  //把ser1生成的公钥文件传输到ser2的root目录下

[root@ser2 ~]# cat  id_rsa.pub  >>/root/.ssh/authorized_keys         //把ser1公钥文件内容导入到authorized_keys文件

注:authorized_keys权限要设置为644.  

    7、验证

[root@ser1 ~]# ssh 10.1.1.2         //尝试ssh登录ser2

Last login: Sat Feb 28 06:01:32 2015 from 10.1.1.1 
[root@ser2 ~]#

注:若想ser2无密码登录到ser1方法同上