问题背景
在最近的开发中,遇到同一个服务器下不同用户经常需要使用scp拷贝文件,每次都会提示输入密码,非常麻烦,严重影响开发效率和心情。为此,参考网上资料,简单研究了一下scp 无密码复制文件的做法,成功帮助大家解决了这个问题,下面做一个简单总结,希望对后面其他项目的开发有所帮助。
适用场景
Linux 跨服务器或同服务器不同用户间,无密码复制文件。
配置步骤
整个过程如下:
本地服务器:A,用户:ychao
远程服务器/本地服务器另外一个帐号:B,用户tode
应用场景:将A服务器下用户ychao的/home/ychao/testsvr文件拷贝到B服务器tode用户/home/tode目录下,无需输入密码。
- 在A上ychao用户下执行以下命令,生成对应的私钥和密钥。
ssh-keygen -t rsa #将会在~/.ssh下生成id_rsa(私钥)和 id_rsa.pub(公钥) 两个文件。注意:由于我们不需要密码,所以执行次命令后,请一直敲回车直至结束。
cp id_rsa.pub id_rsa.pub.ychao #备份一份公钥,用以备拷贝到服务器B
- 在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权限,注意必须要加此权限,否则不生效。
- 在A服务器ychao用户下执行以下指令,把A服务器id_rsa.pub.ychao(公钥)文件传到B服务器~/.ssh 目录下:
scp ~/.ssh/id_rsa.pub.ychao tode@localhost:~/.ssh #配置还未生效,所以需要输入密码。localhost指本地服务器IP,scp具体用法请看帮助文档。
- 在B服务器中执行以下指令,将A服务器生成的公钥追加到authorized_keys中:
cat id_rsa.pub.ychao >> authorized_keys
- 配置完毕,测试:
scp /home/ychao/testsvr tode@localhost:/home/tode #无需输入密码执行成功