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

最近发现一个很吓人的事情,备份服务器里的备份目录下竟然没有备份文件,仔细一看原来是scp命令需要密码的问题。之前建立过信任关系,可能是因为修改了root密码,不成功了。下面说下具体操作。
通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认,不过通过建立信任关系,可以实现不输入密码。

这里假设需要备份的服务器 S 的IP:192.168.0.1
用作备份的服务器 B 的 IP:192.168.0.2

需要从A免密码输入复制文件至B。

1. 在服务器 S 上执行如下命令来生成配对密钥:
ssh-keygen -t rsa
按照提示操作,注意,不要输入passphrase,因为我的之前已经操作过,所以还提示了是否覆盖,输入 "y"回车就可以。其他提示信息如下
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
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:
ff:8e:85:68:85:94:7c:2c:46:b1:e5:2d:41:5c:e8:9b [email protected]

2. 将 /root/.ssh/ 目录中的 id_rsa.pub 文件复制到 服务器 B 的 /root/.ssh/ 目录中,并改名为 authorized_keys。
scp .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

以后从服务器 S scp 到服务器 B 就不需要密码了。

3.使用此方法需要注意:复制的两台计算机需要用相同的账户名,这里都是用的root。为了安全起见,需要在两台机器中创建相同的账号,然后在服务器 S 上用 su 命令切换至该账号下,然后执行第1步,第2步中复制文件时可能 ~/.ssh/ 目录并不存在,需要手动创建。

在第2步中如果机器中已经存在authorized_keys文件,则需注意,这个文件可以包含多个SSH验证信息,这时可用 cat >> 命令将验证文件内容附加上去。

现在服务器 S 上执行脚本 scp ~/.ssh/id_rsa.pub [email protected]:/root/.ssh/s.pub

然后在服务器 B 上执行 cat ~/.ssh/s.pub >> ~/.ssh/authorized_keys

最后可以用个小的文本文件试试。
在服务器 S 上执行
touch ~/test
scp ~/test [email protected]:/root/

在服务器 B 上用 ls查看是否成功,其实刚才在服务器 S 上执行 scp 的时候已经提示传输成功了。

时间: 2024-10-11 11:30:59

Linux下用SCP无需输入密码传输文件的相关文章

linux下用scp命令在两个服务器之间传输文件,利用php_scp函数进行文件传输

在linux下利用scp进行文件传输, 从服务器下载文件 scp [email protected]:/path/filename /path/filename 上传本地文件到服务器 scp /path/filename [email protected]:/path/filename 从服务器下载整个目录 scp -r [email protected]:remote_dir/ /path/ 上传目录到服务器       scp -r /dir [email protected]:remote

Linux scp 免密码 传输文件

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

打通windows和Linux下的传输问题解决只能使用SSH协议下的22端口来传输文件(Openssh for windows)

目的:打通windows和Linux下的传输问题解决只能使用SSH协议下的22端口来传输文件 环境: windows IP192.168.1.120 Linux IP192.168.101 方法: 安装opensshfor windows (次软件开源并增加ssh协议将windows模拟成Unix环境) 安装完软件导入本地用户或者域用户 进入到bin目录下面执行 cd "c:\Program Files(x86)\OpenSSH\bin" mkgroup -l >>..\e

linux与linux,linux与windows之间用SSH传输文件

linux与linux,linux与windows之间用SSH传输文件linux与linux之间传送文件:scp file [email protected]:文件地址    例: scp abc.txt [email protected]:/home/endall/abc.txt windows与linux之间传送文件:笔者用putty的内置PSCP.其它如 SSH Secure File Transfer Client 先在WIN的DOS下,PUTTY目录下及PSCP文件所在目录. pscp

linux下rsync+inotify实现服务器之间文件实时同步

先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所

linux下的c语言编程删除文件夹

刚刚在学习开始做新项目的时候,学长布置了一项任务,就是在给定一个目录下,要将这个目录下一个星期之前的目录包括里面的文件全部删除,只保留这一个星期内的.百度了好久的资料,终于完成,记录一下防止忘记.(注:文件夹名称默认为日期格式,如20140716) #include<dirent.h> #include<sys/types.h> #include<string.h> #include<stdlib.h> #include<unistd.h> #i

Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50

Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50 分类: 系统运维 查找包含BOM头的文件,命令如下: 点击(此处)折叠或打开 grep -r -I -l $'^\xEF\xBB\xBF' ./ \xef\xbb\xbf是UTF8 BOM的16进制表示 这个命令会把当前目录及所有子目录下的BOM头删除掉. 点击(此处)折叠或打开 find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \; 另一种方法: 点击

【java】 linux下利用nohup后台运行jar文件包程序

Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar XXX.jar & &代表在后台运行. 特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行. 继续改进,如何让窗口关闭时,程序仍然运行? 方式三 nohup java -jar XXX.jar & nohup 意思是不挂断运行命令,当账户退出或终端关闭时,

自动修改Linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本

此脚本修改Linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件中的网卡一.网卡二的IP地址(IPADDR).子网掩码(NETMASK)信息 #!/bin/shPROC=/bin/sedFILE_PATH1=/etc/sysconfig/network-scripts/ifcfg-eth0FILE_PATH2=/etc/sysconfig/network-scripts/ifcfg-eth1IP_PRIMAL1=`grep -i ipaddr $F