菜鸟科技网

SSH命令如何下载文件?

SSH(Secure Shell)是一种加密的网络协议,常用于远程登录和管理服务器,同时也支持文件传输功能,通过SSH命令下载文件,用户可以在本地计算机与远程服务器之间安全地传输数据,避免数据在传输过程中被窃取或篡改,本文将详细介绍如何使用SSH命令下载文件,包括基本语法、常用参数、不同场景下的应用方法以及注意事项。

SSH命令如何下载文件?-图1
(图片来源网络,侵删)

SSH命令下载文件的基本语法

SSH命令下载文件通常通过scp(Secure Copy)工具实现,它是SSH协议的一部分,专门用于安全地复制文件和目录。scp的基本语法如下:

scp [选项] [用户名@]远程主机:远程文件路径 本地目标路径
  • [选项]:用于指定scp的行为,如-r(递归复制目录)、-P(指定端口号)、-p(保留文件修改时间等属性)等。
  • [用户名@]远程主机:远程服务器的用户名和主机名或IP地址,若省略用户名,则默认使用当前本地用户名。
  • 远程文件路径:远程服务器上需要下载的文件或目录的路径。
  • 本地目标路径:文件下载到本地后的保存路径,若省略,则默认保存在当前目录。

从远程服务器168.1.100的用户root下载文件/home/test.txt到本地当前目录,命令为:

scp root@192.168.1.100:/home/test.txt .

常用参数及其作用

scp命令提供了多个参数,以满足不同的传输需求,以下是常用参数的说明:

参数 作用 示例
-r 递归复制整个目录,用于下载文件夹 scp -r user@host:/path/to/dir /local/path
-P 指定SSH端口号,默认为22 scp -P 2222 user@host:/file.txt /local/path
-p 保留文件的修改时间、访问时间和权限 scp -p user@host:/file.txt /local/path
-C 启用压缩,适用于传输大文件或慢速网络 scp -C user@host:/file.txt /local/path
-l 限制传输速率(单位:Kbit/s) scp -l 1024 user@host:/file.txt /local/path
-v 详细模式,显示调试信息,便于排查问题 scp -v user@host:/file.txt /local/path

使用压缩功能下载大文件:

SSH命令如何下载文件?-图2
(图片来源网络,侵删)
scp -C user@192.168.1.100:/large_file.zip /local/downloads/

不同场景下的应用方法

下载单个文件

从远程服务器下载单个文件是最常见的场景,假设远程服务器IP为168.1.100,用户为ubuntu,文件路径为/home/ubuntu/data.txt,下载到本地/home/user/目录:

scp ubuntu@192.168.1.100:/home/ubuntu/data.txt /home/user/

下载整个目录

若需下载远程服务器上的整个目录,需使用-r参数,下载/var/www/html目录到本地/home/user/backup

scp -r ubuntu@192.168.1.100:/var/www/html /home/user/backup

通过非默认端口下载

如果远程服务器的SSH端口不是默认的22,需使用-P参数指定端口号,通过端口2222下载文件:

scp -P 2222 ubuntu@192.168.1.100:/home/ubuntu/config.conf /home/user/

使用SSH密钥认证下载文件

为避免每次输入密码,可通过SSH密钥认证实现自动化下载,首先确保本地已生成SSH密对,并将公钥添加到远程服务器的~/.ssh/authorized_keys文件中,之后下载文件无需输入密码:

SSH命令如何下载文件?-图3
(图片来源网络,侵删)
scp -i ~/.ssh/private_key user@host:/file.txt /local/path

下载文件并重命名

下载文件时可直接在本地目标路径中指定新名称,将远程remote.txt下载为local_copy.txt

scp user@host:/remote.txt /local/path/local_copy.txt

注意事项

  1. 权限问题:确保本地用户对目标路径有写入权限,远程用户对源文件有读取权限。
  2. 网络稳定性:大文件传输时,网络不稳定可能导致传输中断,可使用rsync替代scp支持断点续传。
  3. 防火墙设置:确保本地和远程服务器的防火墙允许SSH端口(默认22或自定义端口)的通信。
  4. 路径格式:远程路径使用分隔,避免Windows路径格式(\)导致的错误。
  5. 文件覆盖scp会直接覆盖同名文件,建议先检查本地路径是否已存在同名文件。

相关问答FAQs

问题1:使用scp下载文件时提示“Permission denied”,如何解决?
解答:此错误通常由权限不足引起,可尝试以下方法:

  1. 确认远程文件对当前用户可读:ls -l /path/to/file,检查权限是否包含r
  2. 若远程用户为root,需确认是否允许root登录(修改/etc/ssh/sshd_config中的PermitRootLogin)。
  3. 检查本地目标路径的写权限:ls -ld /local/path,确保当前用户有w权限。

问题2:如何通过SSH隧道使用scp下载文件?
解答:若需通过中间服务器(跳板机)访问目标服务器,可使用SSH隧道,通过跳板机jump_host下载目标服务器target_host的文件:

scp -o ProxyCommand="ssh -W %h:%p user@jump_host" user@target_host:/file.txt /local/path

此命令通过jump_host建立隧道,再连接target_host完成文件下载。

分享:
扫描分享到社交APP
上一篇
下一篇