SSH无密码验证登陆实现

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


做用:使用ssh登陆主机是不须要输入密码。能够把scp 的指令放置于 crontab 服务中, 让咱们的系统透过 scp 直接在背景底下自行 按期的进行网络复制与备份。网络


应用示例:并发

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

步骤:ide

    一、检查系统是否安装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.i686spa

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

    二、使用root用户登陆,修改ssh配置文件orm

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

    三、重启sshd

[root@ser1 ~]# service sshd restart

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

[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   //公钥

注:一、普通用户生成公钥文件在/home/用户名/.ssh/下。
       二、~/.ssh/ 目录必需要是 700 的权限才行。id_rsa必须为600且属于用户本身。不然密钥对比可能失败

    五、将客户端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.  

    七、验证

[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方法同上

相关文章
相关标签/搜索