原理:使用所需用户登录客户端,使用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方法同上
转载于:https://blog.51cto.com/wgmml/1615853