[SSH] [文件传输] scp:基于 SSH 的安全文件传输

01 简介

scp(Secure Copy)是基于 SSH 协议的命令行工具,用于在本地与远程主机之间,或两台远程主机之间进行安全的文件传输。它利用 SSH 通道进行加密,只要具备 SSH 访问权限即可使用。

02 操作

2.1 本地发送到远程

# 语法:scp [本地文件路径] [用户名]@[目标IP]:[远程目标路径]
# /path/to/local/file    - 本地源文件的绝对路径或相对路径
# user                   - 在远程主机上拥有权限的用户名  
# 192.100.100.100        - 远程主机的IP地址或域名
# :                      - 分隔符,区分本地和远程路径
# /home/user/documents/  - 文件在远程主机上的目标路径
scp /path/to/local/file user@192.100.100.100:/home/user/documents/

2.2 从远程下载

# 语法:scp [用户名]@[源IP]:[远程文件路径] [本地目标路径]
# user                   - 在远程主机上拥有权限的用户名
# 192.100.100.100        - 远程主机的IP地址或域名
# :                      - 分隔符,区分远程和本地路径
# /home/user/documents/file - 远程主机上的源文件路径
# /path/to/local/destination/ - 本地目标目录路径
scp user@192.100.100.100:/home/user/documents/file /path/to/local/destination/

2.3 主机之间复制

scp在主机之间传递,实际上是通过本地中转传输的,并不是主机之间直接发送

# 语法:scp [用户名1]@[主机1]:[源文件路径] [用户名2]@[主机2]:[目标路径]

# 将文件从主机A复制到主机B
scp userA@192.100.100.101:/data/reports/report.pdf userB@192.100.100.102:/backup/reports/

03 其他参数

3.1 递归下载目录

# 递归下载远程整个目录到本地
scp -r user@192.100.100.100:/home/user/documents/ /path/to/local/folder/

3.2 指定下载端口

如果对方的ssh端口不是22,需要指定下载端口

# 递归下载远程整个目录到本地
scp -r user@192.100.100.100:/home/user/documents/ /path/to/local/folder/

3.3 指定密钥

# 使用特定SSH密钥文件进行认证下载
scp -i ~/.ssh/my_private_key user@192.100.100.100:/home/user/documents/file ./

3.4 保留文件属性

# 保留文件原属性(时间戳、权限等)
scp -p user@192.100.100.100:/important/config.conf ./

3.5 启用压缩传输

# 启用压缩传输(适合大文件或慢速网络)
scp -C user@192.100.100.100:/large/database_backup.sql ./

3.6 限制最大带宽

# 限制带宽使用(单位:Kbit/s)
scp -l 512 user@192.100.100.100:/backup/large_file.tar.gz ./

04 注意事项

  • 确保对远程文件有读取权限

  • 确保对本地目标路径有写入权限

  • 首次连接时需要确认主机指纹

  • 路径包含空格时要用引号括起来

posted on 2025-10-20 21:55  风惊庭前叶  阅读(5)  评论(0)    收藏  举报