SCP实现无需密码传输文件

SCP概述

Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同

CP ----- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件 
SCP --- 主要是在不同的Linux系统之间来回copy文件

下面我们就主要讲一下SCP命令的基本用法:

scp 传输文件路径 用户名@传输文件目标IP:目标路径(可以指定新的文件名)

在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要手动输入密码确认。

最近的一个项目中就遇到了这个问题,利用os模块的os.system()来执行系统命令来完成定时任务,我们不可能手动输入密码,而应该实现无密传输,我们可以通过建立信任关系,可以实现不输入密码而进行数据传输。

假设俩个服务器A:192.168.111.100,服务器B:192.168.111.101之间进行数据传输:

1、在主机A上执行如下命令来生成配对密钥: (按照提示操作,注意,不要输入passphrase,一直回车完成)

ssh-keygen -t rsa

2、查看B主机上面是否存在authorized_keys文件,如果没有此文件, 将A主机.ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为  authorized_keys

scp .ssh/id_rsa.pub 192.168.111.101:/root/.ssh/authorized_keys

如果B主机上存在authorized_keys文件,则需注意,这个文件可以包含多个SSH验证信息,这时先把id_rsa.pub文件传到B主机的/root/.ssh目录下面(重新命名文件名),然后再利用 cat >>命令将验证文件内容附加上去

比如复制到scp .ssh/id_rsa.pub 192.168.111.101:/root/.ssh/a.pub

然后执行cat ~/.ssh/a.pub >> ~/.ssh/authorized_keys
时间: 2024-12-29 06:35:38

SCP实现无需密码传输文件的相关文章

Linux scp 免密码 传输文件

Linux scp 免密码 传输文件 背景介绍 最近项目是集群化部署(由 node1,node2,node3 三台 CentOS 7.4 的虚拟机构成). 但是,涉及到跨机器同步文件的问题,想通过写shell文件实现,用 crontab 设置定时任务,定时执行改脚本. 由于每次都需要输入密码,导致定时任务没法正常工作,因此,需要三台机器之间可以免密码互相访问. 建立SSH的信任关系 以实现 node1 免密码给 node2 scp传输文件为例说明,需要如下几个步骤: 1.生成 node1 的秘钥

Linux下用SCP无需输入密码传输文件

最近发现一个很吓人的事情,备份服务器里的备份目录下竟然没有备份文件,仔细一看原来是scp命令需要密码的问题.之前建立过信任关系,可能是因为修改了root密码,不成功了.下面说下具体操作.通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认,不过通过建立信任关系,可以实现不输入密码. 这里假设需要备份的服务器 S 的IP:192.168.0.1用作备份的服务器 B 的 IP:192.168.0.2 需要从A免密码输入复制文件至B. 1. 在服务器 S 上执行如下命令来生成配

CentOS下实现SCP免输密码传送文件

前提条件:两台CentOS主机拥有相同的账户名,假设主机A和主机B拥有相同的用户名binguo,只需下面两步 1.以binguo帐户名登录主机A,主目录下执行如下命令生成配对密钥,不用管提示,一路回车: ssh-keygen -t rsa 2.将主目录下隐藏目录.ssh中的id_rsa.pub文件复制到主机B的binguo主目录的/.ssh/目录中,并重命名为authorized_keys. cd .sshscp id_rsa.pub 主机B:/home/binguo/.ssh/authoriz

使用SCP在命令行传输文件

下载远程服务器上的文件 scp   [email protected]:/home/user/download.txt  ./download.txt 上传文件到远程服务器 scp  ./upload.txt  [email protected]:/home/user/upload.txt

shell脚本中如何使scp不输入密码即可传输文件

答:使用ssh密钥对 示例如下: 如果A机想要获取B机上的文件,那么需要将在A机上生成的公钥放置到B机上的指定位置 问题一: 如何在A机上生成ssh密钥对? A:请看如何生成ssh密钥对 问题二: 将A机上的公钥如何传送到B机上? (假设B机ip地址为10.10.10.10) A:使用scp,如 scp ~/id_rsa.pub jello@10.10.10.10:/home/jello/authorized_keys 原文地址:https://www.cnblogs.com/dakewei/p

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议)

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议) 为了传输文件或者目录,我们使用 Ganymed SSH2中的SCPClient类,这个类实现了scp命令功能. 下面的代码包含了传输单个文件和传输目录的功能: package com.doctor.ganymed_ssh2; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io

expect+scp传输文件发现文件丢失

背景 使用expect+scp去跨机器传输文件,(别问我为什么,因为公司的测试机器都是通过堡垒机的,无法绕开堡垒机,只能暂时使用这个方法了),结果发现从A传递到B的tar.gz文件大小不一致了的,当时心里MMP了 步骤 1. 发现不是每次都会丢失文件,理论上网络稳不稳定只会造成传输时间的不同罢了: 2. 查阅资料发现expect的默认时间是30s,所以如果操作了30s的话,就会自行链接,原来如此: 3. 修改默认的连接时间为-1,就是说无限长的时间,具体如下: /usr/local/bin/ex

Python不同电脑之间传输文件实现类似scp功能不输密码

SCP vs SFTP 通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式: sftp = paramiko.SFTPClient.from_transport(ssh.get_transport()) sftp = ssh.open_sftp() 即新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证. 文件上传 In [59]: sftp.put('memor

scp传输文件,自动填充密码

一个偷懒的小shell, #!/usr/bin/expect #************************************************************************* # > File Name: expect.sh # > Author: chenglee # > Main : [email protected] # > Blog : http://www.cnblogs.com/chenglee/ # > Created Tim