一,说明:两台机器的平台和ip

1,a服务器:

centos8:ip:121.122.123.47

版本

[root@yjweb ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

2,    j服务器:

centos6:ip:121.122.7.134

版本:

[root@os3 ~]# cat /etc/redhat-release
CentOS release 6.10 (Final)

我们的目示是通过scp程序把a服务器上的文件复制到j服务器上

说明:ip地址仅供演示,非真实

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,在a服务器上生成密钥:

1,生成密钥

[root@yjweb ~]# ssh-keygen -t rsa

说明:中间一路回车即可,

不要设置密码

说明:-t参数可以指定四种算法类型

[-t dsa | ecdsa | ed25519 | rsa]

我们选择 rsa

说明:查看参数可以使用通用的帮助命令:

[root@yjweb ~]# man ssh-keygen 

2,密钥生成后,可以从用户的home目录下.ssh目录看到

[root@yjweb ~]# ls .ssh/
authorized_keys id_rsa id_rsa.pub known_hosts

三,从a服务器复制公钥到j服务器

1,用ssh-copy-id命令复制公钥到j服务器上

[root@yjweb ~]# ssh-copy-id -i .ssh/id_rsa.pub root@121.122.7.134
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@121.122.7.134's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@121.122.7.134'"
and check to make sure that only the key(s) you wanted were added.

说明:ssh-copy-id属于这个rpm包,如发现不存在可以通过yum安装

[root@yjweb ~]# whereis ssh-copy-id
ssh-copy-id: /usr/bin/ssh-copy-id /usr/share/man/man1/ssh-copy-id.1.gz
[root@yjweb ~]# rpm -qf /usr/bin/ssh-copy-id
openssh-clients-8.0p1-4.el8_1.x86_64

2,登录到j服务器,查看authorized_keys

[root@os3 ~]# more .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiZNKuLsJqi0M......

可以看到我们在a服务器的公钥已经成功添加到了j服务器的 authorized_keys文件上

四,从a服务器用scp复制一个文件到j服务器

注意看是否会提示输入j服务器的密码

1,检查j服务器上的目标文件夹

[root@os3 test]# ll /data/dev/think_file/test/
total 0

2,在a服务器上执行scp命令

[root@yjweb orig]# scp -P 22 /data/web/think_file/cover/orig/1/10.gif root@121.122.7.134:/data/dev/think_file/test/

说明:

-P 22:   在此处指定目标服务器的端口
root 登录目标服务器用的账号
121.122.7.134 目标服务器用的ip
/data/dev/think_file/test/ 在目标服务器上的路径

3,回到j服务器,再次检查测试用的目标文件夹

[root@os3 test]# ll /data/dev/think_file/test/
total 1300
-rw-r--r-- 1 root root 1330533 Mar 16 14:54 10.gif

五,如何在远程服务器上创建目录

[root@yjweb ~]# ssh -p 22 root@121.122.7.134 "mkdir -p /data/dev/think_file_test/cover/orig/1/"

说明:

-p : 用来指定目标服务器的端口号

六,如何复制一整个目录到目标机器?

1,加参数 -r即可

[root@yjweb web]# scp -P 22 -r /data/web/think_file/cover/orig/1/ root@121.122.7.134:/data/dev/think_file/test/
7.gif 100% 548KB 489.4KB/s 00:01
9.gif 100% 542KB 700.2KB/s 00:00
11.png 100% 997KB 1.4MB/s 00:00
10.gif 100% 1299KB 1.3MB/s 00:00
8.gif 100% 440KB 448.9KB/s 00:00

2,一点值得说明的知识:

-r      Recursively copy entire directories.  Note that scp follows symbolic links encountered in the tree traversal.

-r 用来复制整个目录

需要注意的是scp会把符号链接下的文件也复制过来

如何避免这个问题?

可以先把包含符号链接的源目录打包成tar包,
远程复制tar包过来后再解开

centos平台scp通过密钥远程复制文件(免密登录)的更多相关文章

  1. Linux使用SCP命令不使用密钥直接进行远程复制(SSH免密登录)

    假设A服务器要把文件复制到B服务器上 首先我们要在A服务器上生成密钥对 参考:https://www.cnblogs.com/pxblog/p/14396409.html 然后在把生成的密钥公钥id_ ...

  2. 配置hadoop用户SSH无密码登陆 的2种方式 落脚点是 可以ssh免密进入的主机名写入动作发出主机的 known_hosts,而被无密进入主机的authorized_keys文件 免密登录

    cat /proc/versionLinux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version ...

  3. ansible用authorized_key模块批量推送密钥到受控主机(免密登录)(ansible2.9.5)

    一,ansible的authorized_key模块的用途 用来配置密钥实现免密登录: ansible所在的主控机生成密钥后,如何把公钥上传到受控端? 当然可以用ssh-copy-id命令逐台手动处理 ...

  4. Linux/(centos、unix等)的ssh双向免密登录原理和实现

    原理: 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录. 双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他 ...

  5. linux scp 远程复制文件

    1.从本机复制文件到远程scp 文件名 远程计算机用户名@远程计算机的ip:远程计算机存放该文件的路径2.从远程复制文件到本机:scp 远程计算机用户名@远程计算机ip:文件名 存放该文件的本机路径3 ...

  6. 远程复制文件scp使用

    1. install sudo apt-get install openssh-client openssh-server 2. login ssh remoteuser@remoteIP 3. co ...

  7. Linux远程复制文件

    将本机文件app.properties 复制到用户为root,ip为ip的具体路径下去 scp app.properties root@ip:/apps/javaconf/common/ 其他参考: ...

  8. linux 远程复制文件或文件夹

    linux 远程复制文件或文件夹. 复制当前服务器的文件夹或文件到指定服务器的文件夹. #远程复制文件夹: scp -r /home/administrator/test/ root@192.168. ...

  9. Linux 远程复制文件

    Linux 远程复制文件 如果想把机器A上面的dir目录下面的所有文件复制到机器B的dir目录下,我们可以使用nc命令来完成 在机器A的dir目录下面执行: tar -czf - * | nc -l ...

随机推荐

  1. 我是如何使用freemarker生成Word文件的?

    推荐:亲身体验,数次踩坑,遂撰写此文,以备各位不时之需. 背景 一天,产品经理递给我了一份word报告,我定睛一看 这个文档有大大小小的标题层级,还有排版好的段落.各种一目了然的饼图.走势图,当然还少 ...

  2. 一、loadrunner脚本录制及回放

    录制及回放的注意点: 1.测试系统教复杂时,正确的划分action,对监控的每一个业务模型和操作,起到重要作用 2.录制完成后,先进行编译(改动脚本之后检查下有没有语法错误):工具栏Vuser下有一个 ...

  3. oracle之二实例管理及数据库的启动/关闭

    实例管理及数据库的启动/关闭   2.1 实例和参数文件 1.instance 功能:用于管理和访问database.instance在启动阶段读取初始化参数文件(init parameter fil ...

  4. [LeetCode]534. 游戏玩法分析 III(Mysql)

    题目 Table: Activity +--------------+---------+ | Column Name | Type | +--------------+---------+ | pl ...

  5. [LeetCode]415. 字符串相加、43. 字符串相乘

    题目 415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 题解 维护一个temp表示当前两数相加+上一个进位的和. 每次更新结果的一位. 注意终止条件. 最后将 ...

  6. JavaScript 流程控制-循环

    1.循环 循环目的 在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句 JS中的循环 在JS中,主要有三种类型的循环语句: for循环 while循环 do.. ...

  7. 对OAuth2.0协议的理解和测试demo

    1. 什么是OAuth OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. OAuth ...

  8. Linux环境变量总结 转

    转自https://www.jianshu.com/p/ac2bc0ad3d74 Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境 ...

  9. Ubuntu16环境安装和使用NFS

    通过NFS服务我们可以方便的读写服务器上的文件,一起来实战Ubuntu16环境安装和使用NFS: 文章概要 本次实战由以下步骤组成: 列举环境信息: 在192.168.119.128安装NFS服务,将 ...

  10. 刷题[FBCTF2019]Event

    解题思路 信息收集 打开发现是这样的登陆框,信息泄露,弱口令什么的尝试一下,无果,正常注册登陆 发现需要通过admin用户登陆,并且发现有/flag这样的路由,猜测后台为python编写 抓包发现有看 ...