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   #无需输入密码执行成功
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用 scp 命令在 Linux 服务器复制文件。语法格式如下: ``` scp [options] [source file] [destination] ``` 例如: ``` scp /path/to/local/file username@remote:/path/to/remote/directory ``` 这将在本地复制/path/to/local/file文件到远程服务器上的/path/to/remote/directory目录中。 另外也可以使用 rsync 命令实现文件复制,语法格式如下: ``` rsync [options] [source file] [destination] ``` 例如: ``` rsync -avz /path/to/local/file username@remote:/path/to/remote/directory ``` 这将在本地递归地复制/path/to/local/file文件到远程服务器上的/path/to/remote/directory目录中,并显示复制过程中的详细信息。 ### 回答2: Linux可以使用不同的方法来实现服务器复制文件。 其中一个常用的方法是使用scp命令(secure copy)。使用scp命令可以通过网络连接远程服务器复制文件。使用该命令时,需要提供源文件的路径和远程服务器的地址和登录凭证。例如,要将本地文件复制到远程服务器上的目录,可以使用以下命令: scp /本地文件的路径 username@远程服务器的地址:目标目录的路径 通过这种方式,文件将从本地复制到远程服务器上的指定目录中。 另一个常用的方法是使用rsync命令。rsync命令可以通过网络连接远程服务器并同步文件和目录。使用该命令时,需要提供源文件/目录的路径、远程服务器的地址和登录凭证。例如,要将本地目录的内容同步到远程服务器上的目录,可以使用以下命令: rsync -avz /本地目录的路径 username@远程服务器的地址:目标目录的路径 通过这种方式,本地目录的内容将与远程服务器上的目标目录进行同步。 此外,还可以使用FTP(文件传输协议)或SFTP(SSH文件传输协议)来服务器复制文件。这些协议允许用户在本地计算机和远程服务器传输文件用户可以使用专门的FTP客户端软件或通过命令行界面使用FTP或SFTP命令来复制文件。 总而言之,Linux提供了多种方法来实现服务器复制文件,包括scp、rsync、FTP和SFTP等。用户可以根据具体需求选择适合自己的方法来完成文件复制任务。 ### 回答3: Linux服务器复制文件是一种通过网络将文件从一个Linux服务器复制到另一个Linux服务器的操作。它通常使用命令行工具scp或rsync来实现。 使用scp复制文件非常简单。首先,我们需要获得源文件的位置和目标服务器的位置。然后,在命令行中输入以下命令: ``` scp [源文件路径] [用户名]@[目标服务器IP地址]:[目标文件路径] ``` 其中,[源文件路径]是要复制文件在源服务器上的路径,[用户名]是目标服务器的登录用户名,[目标服务器IP地址]是目标服务器的IP地址,[目标文件路径]是要复制文件的目标位置。 例如,如果要将名为file.txt的文件从本地主机复制到远程服务器上的/home/user目录下,命令可能如下所示: ``` scp /path/to/file.txt user@192.168.1.100:/home/user ``` 在复制过程中,您需要输入目标服务器的登录密码。 另一个常用的工具是rsync,它提供了更高级和更强大的功能。与scp不同,rsync可以在重复操作时仅复制更改的文件,从而提高效率。使用rsync,命令可能如下所示: ``` rsync -avz [源文件路径] [用户]@[目标服务器IP地址]:[目标文件路径] ``` 同样,[源文件路径]和[目标文件路径]分别是本地和远程文件的路径。 无论是使用scp还是rsync,两个服务器需要建立网络连接,目标服务器需要有权限接收文件。因此,在进行服务器复制文件之前,确保目标服务器的IP地址和凭据是正确的,并且网络连通性是可靠的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值