Linux间无需输入密码自动定时传输文件

Linux间无需输入密码自动定时传输文件
目录
一、 linux间建立信任关系配置无密码 1
二、 将服务器B指定文件夹挂载到服务器A 3
三、 维护SCP命令文件 4
四、 设置定时计划 5

一、linux间建立信任关系配置无密码
通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认,不过通过建立信任关系,可以实现不输入密码。但是如果密码更改后需要重新配置。
这里假设需要备份的服务器 A 的IP:10.0.2.41
用作备份的服务器 B 的 IP:10.0.231.110
需要从服务器A免密码输入复制文件至服务器B。

1、在服务器 A 上执行如下命令来生成配对密钥:
ssh-keygen -t rsa
按照提示操作,注意,不要输入passphrase直接回车,因为我的之前已经操作过,所以还提示了是否覆盖,输入 "y"回车就可以。其他提示信息如下
prdhana02:~ # ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:EhCG5zn/qhNrgMD7x9gXnhaN+4Ndhg0q3ivUuf9qn58 root@prdhana02
The key’s randomart image is:
±–[RSA 2048]----+
| .+. |
| … |
|. o … |
|… + . . |
|… oo S + |
|… .o.O o + |
| …o+.O o |
| o+
X.+ . . |
| .oo=o=+=+.E |
±—[SHA256]-----+
在这里插入图片描述
2、将 /root/.ssh/ 目录中的 id_rsa.pub 文件复制到 服务器 B 的 /root/.ssh/ 目录中,并改名为 authorized_keys。如果服务器B没有这个目录,在服务器B也运行第1步就会生成目录

scp /root/.ssh/id_rsa.pub root@10.0.203.110:/root/.ssh/authorized_keys

以后从服务器 A scp 到服务器 B 就不需要密码了
prdhana02:~ # scp /root/.ssh/id_rsa.pub root@10.0.203.110:/root/.ssh/authorized_keys
The authenticity of host ‘10.0.203.110 (10.0.203.110)’ can’t be established.
ECDSA key fingerprint is SHA256:7X6gDKJTzTLuY22yHPDqP19qpbtH2/vD6Dl+Ym3WW6c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘10.0.203.110’ (ECDSA) to the list of known hosts.
root@10.0.203.110’s password:
id_rsa.pub 100% 396 0.4KB/s 00:00
在这里插入图片描述
3、备注:
3.1、复制的两台计算机需要用相同的账户名,这里都是用的root。为了安全起见,需要在两台机器中创建相同的账号,然后在服务器 A 上用 su 命令切换至该账号下,然后执行第1步,第2步。
3.2、在第2步中如果服务器B中已经存在authorized_keys文件,则需注意,这个文件可以包含多个SSH验证信息,这时可用 cat >> 命令将验证文件内容附加上去。
3.2.1、现在服务器 A 上执行脚本
scp /root/.ssh/id_rsa.pub root@10.0.203.110:/root/.ssh/s.pub
3.2.2、然后在服务器 B 上执行
cat /root/.ssh/s.pub >> /root/.ssh/authorized_keys

二、将服务器B指定文件夹挂载到服务器A
登录服务器A,在根目录下创建文件夹,然后将服务器B指定文件夹挂载到服务器A

prdhana02:/ # cd /
prdhana02:/ # pwd
/
prdhana02:/ # mkdir prdbk
prdhana02:/ # mount 10.0.203.110:/home/backup/prdbackup /prdbk
prdhana02:/ # df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 252G 0 252G 0% /dev
tmpfs 252G 39M 252G 1% /dev/shm
tmpfs 252G 4.0G 248G 2% /run
tmpfs 252G 0 252G 0% /sys/fs/cgroup
/dev/mapper/vg_os-lv_root 332G 36G 296G 11% /
/dev/sda1 979M 41M 872M 5% /boot
/dev/mapper/vg_hana-lv_data 6.0T 150G 5.9T 3% /hana/data
/dev/mapper/vg_hana-lv_shared 3.9T 288G 3.6T 8% /hana/shared
/dev/mapper/vg_os-lv_usrsap 197G 282M 196G 1% /usr/sap
tmpfs 51G 0 51G 0% /run/user/481
tmpfs 51G 0 51G 0% /run/user/1001
tmpfs 51G 16K 51G 1% /run/user/482
/dev/md0 1.5T 7.9G 1.5T 1% /hana/log
tmpfs 51G 0 51G 0% /run/user/0
//10.0.10.121/PRDbk 391G 97G 294G 25% /WPRDdb
10.0.203.110:/home/backup/prdbackup 447G 39M 447G 1% /prdbk
在这里插入图片描述
三、维护复制传输命令文件
备注:由于SCP不支持断点续传,网络环境不是很理想,所以启用rsync
在/root/bin下使用touch创建一个.sh的文件,然后使用vi编辑文件(i键修改,esc退出编辑状态,“:wq”保存,“:q!”不保存退出)
prdhana02:~/bin # touch remprdbk.sh
prdhana02:~/bin # ls
rembakcup.sh remprdbk.sh
prdhana02:~/bin # vi remprdbk.sh

#!/bin/bash
#scp /hana/shared/PRD/HDB00/backup/data/DB_PRD/COMPLETE_DATA_BACKUP* /prdbk;
#scp /hana/shared/PRD/HDB00/backup/data/DB_PRD/COMPLETE_DATA_BACKUP* root@10.0.203.110:/home/backup/prdbackup;
rsync -P --rsh=ssh /hana/shared/PRD/HDB00/backup/data/DB_PRD/COMPLETE_DATA_BACKUP_databackup_0_1 10.0.203.110:/home/backup/prdbackup;
在这里插入图片描述

四、设置定时计划
prdhana02:/ # crontab -e
在原有的基础上增加一条。编辑时也是按“i”键进行编辑,编辑完按“Esc”后退出编辑状态,再根据是否保存进行不同的操作:保存按“:wq”;不保存按“;q!”

prdhana02:~/bin # crontab -e

#* */1 * * * /usr/sbin/ntpdate -u 10.0.2.52 >/dev/null 2>&1
30 3 * * * /usr/sbin/ntpdate -u 10.0.2.52 >> /var/log/ntpdate.log
00 01 * * 6 /root/bin/rembakcup.sh
00 19 * * 3-4 /root/bin/remprdbk.sh
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux自动输入密码可以通过以下几种方式实现: 1. 使用expect工具:expect是一个自动化工具,可以模拟用户的交互操作,包括输入密码。可以编写一个expect脚本,在其中指定需要输入密码的命令和密码,然后运行脚本即可。 2. 使用ssh密钥认证:可以在本地生成一对公私钥,将公钥上传到需要登录的远程服务器上,然后在本地使用ssh命令连接远程服务器时,就可以自动完成认证,无需输入密码。 3. 使用sudo免密码:可以在sudoers文件中配置免密码,即指定某个用户或组在执行sudo命令时无需输入密码。具体配置方法可以参考sudoers文件的注释说明。 4. 使用gnome-keyring:gnome-keyring是一个密码管理工具,可以将密码保存在一个安全的地方,然后在需要输入密码的时候自动填充。可以在gnome桌面环境下使用该工具。 ### 回答2: 在Linux系统中,自动输入密码的需求可能会出现在一些自动化脚本或自动化工具中,这时候需要采用一些技巧来实现自动输入密码。 最常见的方法是使用SSH无密码登录来避免需要输入密码。SSH无密码登录需要在两台机器之进行设置:将公钥添加到另一台机器的已授权密钥列表中,以便允许该用户在不使用密码的情况下进行远程登录。 除了SSH无密码登录方法,还有一些其他方法可以实现自动输入密码: 1.设置sudoers文件:将需要自动输入密码的命令添加到sudoers文件中,同时指定免密码验证。这就意味着通过sudo命令执行时,不需要输入密码。 2.使用expect工具:expect是一个自动化交互式应用程序的工具集,它可以用于自动化地执行命令,并且可以在执行过程中与程序进行交互,实现自动输入密码的效果。 3.使用加密的配置文件:将需要用到密码的配置文件加密,然后在需要使用时,输入口令解密,以便访问配置文件中的信息。 无论采用什么方式,自动输入密码都需要注意安全性问题,应该采取适当的措施确保密码不会被泄露。例如,将密码存储在明文文本文件中是非常危险且不安全的。 ### 回答3: Linux系统是一个非常强大的操作系统,但是在使用过程中可能需要频繁输入密码,这对于用户来说可能会带来一些不便。为了解决这个问题,Linux系统提供了一些方法来实现自动输入密码的功能。 一、使用SSH公钥 SSH公钥是一种安全的验证方式,它可以允许用户在不输入密码的情况下访问SSH服务器。SSH公钥是使用RSA或DSA算法生成的一对密钥,一把是公钥,一把是私钥。在使用SSH公钥进行验证时,用户将其公钥添加到服务器的authorized_keys文件中,当用户访问服务器时,服务器会自动识别该公钥并允许用户访问,无需输入密码。 二、使用sshpass工具 sshpass是一个命令行工具,可以在不需要交互式输入密码的情况下,从命令行输入密码。它可以将密码通过命令行参数的形式传递给ssh命令,从而实现自动化登录。 使用sshpass的语法为: sshpass -p <password> ssh <username>@<host> 其中,<password>表示你的密码,<username>表示你的用户名,<host>表示你要登录的主机名或IP地址。 三、使用expect脚本 expect是一种自动化工具,可以用来编写脚本,实现自动交互和处理。在使用expect脚本自动输入密码时,我们可以编写一个脚本来实现自动登录功能。脚本包括交互式输入用户名和密码,并通过expect命令进行自动化处理。 使用expect脚本的语法为: #!/usr/bin/expect spawn ssh <username>@<host> expect "password:" send "<password>\r" interact 其中,<username>表示你的用户名,<host>表示你要登录的主机名或IP地址,<password>表示你的密码。 总之,在Linux系统中实现自动输入密码的方法有很多,不同的方法适合不同的场景,用户可以根据自己的需要选择最合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值