linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录

简介: 原文出处: http://blog.csdn.net/five3/article/details/8648484 最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都是一个样,但是没有说明头尾,所以选择了一个尝试代价较小的ssh自动登录来替代之。

原文出处: http://blog.csdn.net/five3/article/details/8648484


最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都是一个样,但是没有说明头尾,所以选择了一个尝试代价较小的ssh自动登录来替代之。

ssh大家都能用到,通常我们用到的功能基本就是登录,或者远程执行shell命令。

[plain]  view plain copy
  1. ##登录  
  2. ssh loginuser@host_or_ip  
  3. ##执行远程命令  
  4. ssh loginuser@host_or_ip commands  

但通常要是执行命令的话,都是执行shell脚本,肯定不想每次自己再输入密码,就不能自动化也就少了快感啦。所以要让ssh能自动登录,方法好像有很多,这里就用尝试代价最小的,公钥认证的方式。具体操作见下:

A:为本地机

B:为远程服务器【被登录】

1、在A上生成ssh的私钥和公钥【生成的文件都在~/.ssh目录下】

[plain]  view plain copy
  1. ssh-keygen -t rsa     ##需要3次回车  
  2. ssh-keygen -t rsa -P  ##仅一次回车  

2、把A的公钥内容传到B的用户目录的.ssh文件夹下的authorized_keys文件中

[plain]  view plain copy
  1. scp ~/.ssh/id_rsa.pub B_user@B_host_or_ip:~/.ssh/authorized_keys  ##希望每次自动登录用什么用户,这里的B_user就用什么帐号,因为默认会考到这个帐号下.ssh中  
注意:一定要把内容放到authorized_keys文件里,如果这个文件已经存在,那就追加到后面即可,不要覆盖了。

3、A再用ssh进行操作时就不需要输入密码了

[plain]  view plain copy
  1. ssh B_user@B_host_or_ip  ##直接登录成功  

SCP和ssh是一套的,只不过这个工具用来在linux之间进行文件传输的,用的和ssh一样的安全传输协议。所以在ssh能够自动登录之后,使用scp命令进行服务器间的文件复制也就不要手动输入密码了,其实这样此时已经可以实现shell脚本自动备份文件的功能了,因为scp就是一个服务器间的copy程序,scp就是安全copy的意思,scp常用的命令为:

[plain]  view plain copy
  1. scp /path/to/source user@des:/path/to/local   ##本地赋值到远程  
  2. scp user@source:/path/to/source /path/to/local  ##远程复制到本地  

Rsync 命令是一个远程同步程序,与scp相比,它可以以最小的代价备份文件,只备份有差异的文件,这样每次备份就少了很多时间,此外在传输协议上除了自身的协议之外,还支持以ssh的方式传输。只要加个ssh参数即可,常用的命令格式:

[plain]  view plain copy
  1. rsync -avH [ssh] /path/to/source user@des:/path/to/local  ##本地同步到远程,推  
  2. rsync -avH [ssh] user@des:/path/to/source /path/to/local  ##远程同步到本地,拉  
同样的,这个命令在ssh能够自动登录后就可以不用输入密码就可以自动同步文件了,当然这个工具自己也可以支持不输入密码的命令,--password-file=/path/to/pwd,只不过还需要配置rsync服务,比较麻烦,以后有必要了再试。

shell能自动执行备份了,还有就是希望能定期自己备份,别老是人去触发,这个时候就用到linux的任务计划命令crontab,其常用的命令格式为:

[plain]  view plain copy
  1. * * * * * /command_path  
  2. 前5个*依次代表  
  3. 分钟:0-59  
  4. 小时:1-23  
  5. 日期:1-31  
  6. 月份:1-12  
  7. 星期:0-6(0表示周日)  

还可以用一些特殊符号:

       *: 表示任何时刻

       ,: 表示分割

  -:表示一个段,如第二端里: 1-5,就表示1到5点

       /n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

[plain]  view plain copy
  1. 00 8,12,16 * * * /dataapp.sh  
  2. 30 2 * * * /dataapp.sh  
  3. 10 8,12,16 * * *  /dataapp.sh  
  4. 10 8,12,16 * * *  /dataapp.sh  
  5. 10 8,12,16 * * *  /dataapp.sh 

目录
相关文章
|
3月前
|
Ubuntu Linux
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
322 20
|
8月前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
887 5
|
7月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
8月前
|
安全 Linux 网络安全
Linux 远程登录
Linux 远程登录
88 2
|
9月前
|
Linux Docker 容器
9. 同步执行Linux多条命令
9. 同步执行Linux多条命令
|
9月前
|
监控 Linux Shell
Rsync 基于 SSH 同步
Rsync 实时同步配置
223 3
|
10月前
|
运维 安全 Linux
【超实用秘籍】Linux文件传输新高度:10个scp命令让你瞬间变身文件传输达人,从此告别繁琐操作!
【8月更文挑战第13天】文件传输是运维工作的核心部分,尤其对Linux用户来说,了解高效且安全的传输方法非常重要。本文介绍10种scp命令的应用技巧,涵盖基础文件传输、密钥认证、目录复制等场景,助你灵活运用这一基于SSH协议的安全工具。从简单的文件传输到复杂的多主机文件迁移,scp都能轻松应对。通过本文的学习,你将能更熟练地使用scp命令,提高工作效能。
433 6
|
10月前
|
安全 Linux 网络安全
紧急恢复指南:当Linux系统的启动或远程登录受阻
在Linux系统管理中,没有什么比发现系统因为配置错误而无法启动或登录更让人头疼的了。这次操作记录将介绍几种有效的恢复方法,减少潜在的业务中断影响。
|
10月前
|
Linux API 调度
重温Linux内核:互斥和同步
本文全面回顾了Linux内核中的互斥和同步机制,包括中断屏蔽、原子变量、自旋锁、读写锁、顺序锁、信号量、互斥量、RCU机制以及完成量等,提供了它们的定义、实现原理、API用法和使用时的注意事项。
139 0
|
10月前
|
Linux Shell 网络安全
在Linux中,rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?
在Linux中,rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?