rsync命令的前提是建立ssh远程免密登录。
在ubuntu系统下面是自带openssh 客户端的,在centos系统下面有可能没有安装客户端,若没有安装使用yum命令安装客户端。
一般ssh命令是root权限下设置的,但是出于安全考虑很多linux系统不允许root直接登录,有的会采用先允许普通用户登录,普通用户登录成功后允许其输入root密码提权,这也对ssh的设置产生了些许影响,说明如下:
打开A主机的控制终端,输入ssh-keygen命令,按两次回车,生成密钥对。
在当前目录下执行cd .shh进入.ssh目录,这个。.ssh目录一般是被隐藏起来的,但是可以通过ll命令查看,但是通过ls命令确实是无法查看的。
执行远程拷贝命令
scp id_rsa.pub ubuntu@192.168.0.112:.ssh/id_rsa.pub
输入远程用户密码,回车
ssh ubuntu@192.168.0.112
输入密码进入远程主机
cd /home/ubuntu/.ssh
将公钥内容追加到authorized_keys
cat id_rsa.pub >> authorized_keys
查看authorized_keys
cat authorized_keys
修改 authorized_keys 权限
chmod 600 authorized_keys
修改.ssh权限
chmod 700 .ssh
使用exit命令返回A主机
使用ssh ubuntu@192.168.0.112
尝试连接远程主机,诶?仍然要求输入密码,为什么?
实际上通过ll命令可以看到,.ssh和authorized_keys的用户和用户组都是root,那么ubuntu当前非root用户自然是无法使用这两个文件的。
解决方法,
使用chown ubuntu .ssh ,chgrp .ssh 修改.ssh用户和用户组
使用chown ubuntu authorized_keys ,chgrp ubuntu authorized_keys 修改.authorized_keys用户和用户组
使用ssh ubuntu@192.168.0.112
尝试连接远程主机,成功!