原理:使用所需用户登陆客户端,使用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方法同上