Linux服务器传输相关-scp命令调试记录

SCP命令传输文件及公私钥配置


一、scp命令

Linux scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

写法及示例

scp [可选参数] file_source file_target

例如,想要从当前服务器向另一台服务器批量传输文件:

find /example/filePath -maxdepth 1 -type f -mtime -1655 -mtime +1290 -exec scp {} user@ip:/example/targetPath \;

其中:
/example/filePath 为要查找的目录路径。
-maxdepth 1 表示深度为1,即仅在当前目录下搜索。
-type f 表示搜索文件类型为普通文件。
-mtime -1655 -mtime +1290 表示文件修改时间在 1655 天到 1290天之间。
-exec scp {} user@ip:/example/targetPath \; 表示对于找到的每个文件执行 scp 命令进行上传,其中 {} 表示文件名占位符,; 表示命令结束符。

然而每传输一个文件都需输入目标server的密码,这时候需要进行SSH配置公钥私钥进行认证,从而免去此问题

二、使用SSH建立信任关系

1.首先在本地机器上生成公钥和私钥

ssh-keygen -t rsa

提示的信息可以全部跳过。如下:

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:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx  root@localhost.domain

2.将公钥上传到另一台远程server

如下(示例)(带有重命名):

scp ~/.ssh/id_rsa.pub user@ip:~/.ssh/authorized_keys

完成此步后再进行之前的操作就不用重复输入密码了。

注意

如果server中已经存在authorized_keys文件,说明已经包含多个SSH验证信息,可用 cat >>命令将验证文件内容附加上去。

cat ~/.ssh/a.pub >> ~/.ssh/authorized_keys

此时就能将公钥添加到用户的授权密钥文件中,可以尝试重新运行原始命令来验证是否成功实现了 SSH 密钥认证。


参考:https://blog.csdn.net/weixin_28813401/article/details/116671202

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要在 Linux 上将本地文件上传到服务器,您可以使用 scp 命令。 scp 命令的基本语法如下: ``` scp [可选参数] 本地文件 用户名@目标服务器:目标文件路径 ``` 其中,可选参数可以是以下选项之一: - `-P`:指定 SSH 连接的端口号; - `-r`:递归复制整个目录; - `-v`:显示详细的进度和调试信息。 例如,要将本地文件 `localfile.txt` 上传到远程服务器 `example.com` 的 `/path/to/remote/` 目录下,并且使用用户名 `username` 进行连接,您可以执行以下命令: ``` scp localfile.txt username@example.com:/path/to/remote/ ``` 该命令将使用默认 SSH 端口 22 连接到远程服务器,并将 `localfile.txt` 文件复制到 `/path/to/remote/` 目录下。 如果您需要指定非默认的 SSH 端口号,例如 2222,您可以使用 `-P` 参数,例如: ``` scp -P 2222 localfile.txt username@example.com:/path/to/remote/ ``` 以上就是在 Linux 上上传本地文件到服务器的基本方法。希望能对您有所帮助! ### 回答2: 在Linux系统下,可以使用scp命令将本地文件上传到服务器scp命令使用格式为: ``` scp [选项] 本地文件路径 目标服务器用户名@目标服务器IP:目标文件路径 ``` 其中,选项包括: - -r:递归复制整个目录(如果上传的是目录) - -p:保留原文件时间戳信息 - -P:指定目标服务器的ssh端口(默认是22) 例如,将本地的文件example.txt上传到目标服务器上的/home/user目录下,命令如下: ``` scp example.txt user@目标服务器IP:/home/user ``` 如果要上传的是一个目录及其所有内容,使用选项-r: ``` scp -r example_directory user@目标服务器IP:/home/user ``` 在执行命令时,需要输入目标服务器的登录密码。 此外,还可以使用sshpass命令自动化输入密码,例如: ``` sshpass -p '密码' scp example.txt user@目标服务器IP:/home/user ``` 请注意,在使用sshpass命令时要谨慎,因为密码会以明文形式显示在命令行中。 以上是上传本地文件到服务器的简单介绍,希望能够对你有所帮助。 ### 回答3: 要在Linux中将本地文件上传到服务器,可以使用scp命令scp命令用于通过SSH协议在本地主机和远程服务器之间进行文件传输。它可以在不同的主机之间传输文件和目录。 要上传本地文件到服务器,需要执行以下命令: scp [选项] [源文件路径] [目标服务器地址:目标文件路径] 其中,选项可以是一些可选参数,例如-r表示递归复制目录。 源文件路径是本地文件的路径,可以是相对路径或绝对路径。 目标服务器地址是目标服务器的IP地址或主机名。 目标文件路径是文件在服务器上的路径,可以是相对路径或绝对路径。 例如,假设要将本地文件/home/user/Desktop/file.txt上传到服务器的/home/user目录下,可以执行以下命令: scp /home/user/Desktop/file.txt user@server_ip:/home/user/ 其中,user是服务器的用户名,server_ip是服务器的IP地址或主机名。 执行命令后,系统会提示输入服务器的密码,输入密码后文件就会被上传到服务器上的指定路径。 这样,文件就会通过scp命令从本地上传到服务器了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值