scp 如何从目标机器下载文件?

使用 scp 从目标机器下载文件到本地机器的基本语法如下:

scp [选项] 用户名@目标机器IP:目标文件路径 本地保存路径

详细步骤和示例:

1. 基本下载命令

scp username@remote_host:/remote/path/to/file /local/path/to/save
  • username: 目标机器的用户名。
  • remote_host: 目标机器的IP地址或域名。
  • /remote/path/to/file: 目标机器上的文件绝对路径。
  • /local/path/to/save: 本地保存文件的路径(可以是目录或指定文件名)。

2. 示例

  • 从目标机器 192.168.1.100 下载 /home/user/data.txt 到本地的当前目录:bashscp user@192.168.1.100:/home/user/data.txt .. 表示当前目录)
  • 下载文件并重命名为 local_data.txtbashscp user@192.168.1.100:/home/user/data.txt ./local_data.txt
  • 下载整个目录(加 -r 递归复制):bashscp -r user@192.168.1.100:/remote/path/to/folder /local/path

3. 常用选项

选项作用
-P 端口号指定SSH端口(默认22可省略)
-r递归下载目录
-i 密钥文件使用指定私钥认证(替代密码)
-v显示详细传输过程(调试用)

4. 指定非默认SSH端口

如果目标机器的SSH服务不在默认端口(如 2222):

scp -P 2222 user@remote_host:/path/to/file /local/path

5. 使用密钥认证(无密码)

scp -i ~/.ssh/id_rsa user@remote_host:/path/to/file /local/path

6. 注意事项

  • 确保目标机器的SSH服务已启动。
  • 本地路径需有写入权限。
  • 首次连接时会提示确认目标机器指纹,输入 yes 即可。

常见问题

  • 权限被拒绝:检查目标文件是否可读,或使用 sudo(需配置免密sudo)。
  • 连接超时:检查网络、防火墙是否放行SSH端口。
  • 文件名含空格:用引号包裹路径(如 "/path/with spaces/file.txt")。

如果需要从本地上传文件到目标机器,命令格式类似,但顺序相反:

scp /local/file user@remote_host:/remote/path

发表回复