2022.3.4\5\7---ssh密钥无密码传输---(xxx年协议)

原文地址:GitLab 远程 定时备份 - Whitedba - 博客园 (cnblogs.com)

附:linux 的基本操作(编写shell 脚本) - 张_俊_杰 - 博客园 (cnblogs.com)

  Linux下find命令详解_liangkk的博客-CSDN博客_find linux

  在windows中编写shell脚本存在换行问题

  

 

 

 

 

以下正文:

手动转移恢复备份的数据费时费力。最好是实现远程自动传输备份的Gitlab文件。通过scp拷贝文件需要输入密码,而定时任务里面是不能输入密码的,为了克服这个问题,发现ssh密钥传输的方式可以跳过密码,然后用scp定时的传输备份的文件。

环境准备:

1.gitlab所在的服务器A(centos7,192.168.1.1)

2.备份服务器B(centos7,192.168.1.2)

 

步骤:

 1)在gitlab服务器A上生成rsa证书 

ssh-keygen -t rsa
####命令输入后一直回车,直接以用默认的

这样,在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,其中公共密钥保存在 /root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。

2)在gitlab服务器A上cp一份rsa公钥证书 
cd /root/.ssh
cp id_rsa.pub id_rsa.pub.A

3)生成rsa公钥证书传输到备份服务器B
mkdir -p /root/.ssh
#####先在服务器B上创建目录/root/.ssh。

scp /root/.ssh/id_rsa.pub.A root@192.168.1.2:/root/.ssh/
#####使用scp命令进行远程复制,将服务器A生成的id_rsa.pub.A拷贝到服务器B的/root/.ssh目录下。此时需要服务器B的输入密码
4)创建authorized_keys文件
touch /root/.ssh/authorized keys
####在备份服务器B的/root/.ssh下创建authorized_keys文件,这个authorized_keys是一个文件,里面是各个设备ssh公钥文本合集
5)将id_rsa.pub.A文件内容追加到authorized_keys 文件中
cd /root/.ssh/
cat id_rsa.pub.A >> authorized_keys
####此处的cat是把id_rsa.pub.A里面的内容复制追加authorized_keys里面
6)修改authorized_keys文件的权限
chmod 600 authorized_keys

####修改权限之前

 ####修改权限之后

 

7)修改SSH配置文件

vim /etc/ssh/sshd_config

####在配置文件中确保存在且没有注释掉如下内容

 

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

########设置完之后记得重启SSH服务,让设置升效
service sshd restart


 

上述设置完成后再次scp命令则不需要输入密码

8)编辑脚本文件

 vim /root/auto_remote.sh

添加如下内容:

#/bin/bash

###gitlab备份文件存放的路径
LocalBackDir=/var/opt/gitlab/backups

###备机(服务器)存放备份文件的地址
RemoteBackDir=/root/gitlab_backup

###备机登录的账户
RemoteUser=root

###备机的ip地址
RemoteIP=192.168.150.140

###备份文件名称
BackupFile=$(find $LocalBackDir -mtime -2 -name '*.tar' )
###find /var/opt/gitlab/backups -mtime -2 -name '*.txt' -print

###备份文件传输指令
scp $BackupFile $RemoteUser@$RemoteIP:$RemoteBackDir
###scp /var/opt/gitlab/backups find -mtime -2 -name '*.txt' root@192.168.150.136:/root/gitlab_backup

 

9)修改文件权限

chmod 777 auto_backup_to_remote.sh

 

10)创建定时任务

###每天19:10执行脚本

10 19 * * * /root/auto_remote.sh

 

 

 

 

 

 














 

posted @ 2022-03-08 11:50  wangwenwangwen  阅读(210)  评论(0)    收藏  举报