首先确认centos下客户端和服务器端都已经安装了SSH服务
Contents [hide]
- 1 修改客户端sshd配置文件
- 2 在客户端生成公钥和私钥文件
- 3 接下来我们就可以使用rsync,使用SSH服务无密码登陆来同步服务器端的文件
修改客户端sshd配置文件
1
|
vim
/
etc
/
ssh
/
sshd_config
|
去掉以下三行之前的#
1
2
3
|
RSAAuthentication
yes
PubkeyAuthentication
yes
AuthorizedKeysFile
.ssh
/
authorized_keys
|
重启ssh服务
1
|
service
sshd
restart
|
在客户端生成公钥和私钥文件
1
2
|
ssh
-
keygen
-
t
dsa
-
P
''
-
f
~
/
.
ssh
/
id_dsa
cat
~
/
.
ssh
/
id_dsa
.
pub
>>
~
/
.
ssh
/
authorized_keys
#上传公钥到本地的服务器
|
我们来测试以下连接本地是否可以无密码访问了
1
|
ssh
localhost
|
测试成功!
(
如果失败尝试修改相关目录权限再试
1
2
|
chmod
700
~
/
.ssh
chmod
600
~
/
.ssh
/
authorized_keys
|
)
将公钥文件拷贝到远程服务器
方法一:
1
|
cat
~
/
.
ssh
/
id_dsa
.
pub
|
ssh
远程用户名
@远程服务器
ip
-
p
端口号
'cat - >> ~/.ssh/authorized_keys'
|
方法二:
在本机上执行:
1
|
scp
-
P
端口号
~
/
.
ssh
/
id_dsa
.
pub
远程用户名
@
ip
:
/
home
/远程用户名
/
|
登陆远程服务器 远程用户名@ip 后执行:
1
|
cat
id_dsa
.pub
&
gt
;
&
gt
;
~
/
.ssh
/
authorized_keys
|
如果登陆测试不成功,需要修改远程服务器IP上的文件authorized_keys的权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能 )
注意:由于出于安全的考虑,我们经常在服务器上线之前会修改SSH的默认端口(默认端口为22),所以这里的-p选项为修改后的ssh服务端口号,如果使用22端口则无需添加此选项
1
2
|
chmod
700
~
/
.ssh
chmod
600
~
/
.ssh
/
authorized_keys
|
如果出现以下错误
1
|
Permission
denied
(
publickey
,
gssapi
-
with
-
mic
)
.
|
那就要修改服务器端的配置文件
1
2
3
4
5
6
7
|
vim
/
etc
/
ssh
/
sshd_config
# 确保PasswordAuthentication为yes
PasswordAuthentication
yes
# 重启SSH服务
service
sshd
restart
|
如果出现以下错误
1
|
~
/
.
ssh
/
authorized_keys
:
No
such
file
or
directory
|
在服务器端做出如下修改
1
2
|
mkdir
~
/
.
ssh
chmod
700
~
/
.
ssh
|
最后在客户端上尝试
1
|
ssh
username
@
117.xxx.xxx.xxx
-
p
端口号
|
显示
1
|
Last
login
:
Sun
Jan
22
23
:
28
:
31
2012
from
222.xxx.xxx.xxx
|
那就大功告成啦
接下来我们就可以使用rsync,使用SSH服务无密码登陆来同步服务器端的文件
1
|
rsync
-
av
-
e
"ssh -p 端口号"
username
@
117.xxx.xxx.xxx
:源服务器绝对路径
目标服务器绝对路径
|
rsync参数详解
rsync: failed to set times on “directory” Operation not permitted的问题