Linux 跨服务器或不同用户间无密码复制文件

问题背景

在最近的开发中,遇到同一个服务器下不同用户经常需要使用scp拷贝文件,每次都会提示输入密码,非常麻烦,严重影响开发效率和心情。为此,参考网上资料,简单研究了一下scp 无密码复制文件的做法,成功帮助大家解决了这个问题,下面做一个简单总结,希望对后面其他项目的开发有所帮助。

适用场景

Linux 跨服务器或同服务器不同用户间,无密码复制文件。

配置步骤

整个过程如下:
本地服务器:A,用户:ychao
远程服务器/本地服务器另外一个帐号:B,用户tode
应用场景:将A服务器下用户ychao的/home/ychao/testsvr文件拷贝到B服务器tode用户/home/tode目录下,无需输入密码。

  1. 在A上ychao用户下执行以下命令,生成对应的私钥和密钥。
ssh-keygen -t rsa   #将会在~/.ssh下生成id_rsa(私钥)和 id_rsa.pub(公钥) 两个文件。注意:由于我们不需要密码,所以执行次命令后,请一直敲回车直至结束。
cp id_rsa.pub id_rsa.pub.ychao  #备份一份公钥,用以备拷贝到服务器B
  1. 在B上tode用户下同样执行以下命令,生成对应的私钥和密钥:
ssh-keygen -t rsa   #将会在~/.ssh下生成id_rsa(私钥)和 id_rsa.pub(公钥) 两个文件,同上,一直敲回车直至结束。
touch ~/.ssh/authorized_keys  #创建authorized_keys文件
chmod 600 ~/.ssh/authorized_keys #添加authorized_keys权限,注意必须要加此权限,否则不生效。
  1. 在A服务器ychao用户下执行以下指令,把A服务器id_rsa.pub.ychao(公钥)文件传到B服务器~/.ssh 目录下:
 scp ~/.ssh/id_rsa.pub.ychao tode@localhost:~/.ssh  #配置还未生效,所以需要输入密码。localhost指本地服务器IP,scp具体用法请看帮助文档。
  1. 在B服务器中执行以下指令,将A服务器生成的公钥追加到authorized_keys中:
cat id_rsa.pub.ychao  >>  authorized_keys
  1. 配置完毕,测试:
scp /home/ychao/testsvr tode@localhost:/home/tode   #无需输入密码执行成功

猜你喜欢

转载自blog.csdn.net/yc705201947/article/details/80175751