可使用scp命令在本地与远程Linux服务器间安全传输文件:支持上传、下载、递归传目录、指定非标端口及密钥免密认证五种方式,均基于SSH加密通道。

如果您需要在本地计算机与远程Linux服务器之间传输文件,则可以使用scp命令实现安全的文件复制。以下是几种常见的传输方法:
一、使用scp命令上传文件到服务器
scp基于SSH协议,通过加密通道将本地文件复制到远程服务器指定路径,确保传输过程中的数据安全性。
1、打开终端(Linux/macOS)或安装并启动WSL/PowerShell(Windows)。
2、输入以下格式命令,将本地文件上传至服务器:
scp /path/to/local/file username@server_ip:/path/to/remote/directory/
3、按回车后输入远程用户的密码,传输开始。
4、传输完成后终端无额外提示,可通过ssh登录服务器后使用ls命令验证文件是否存在。
二、使用scp命令从服务器下载文件到本地
该方式将远程服务器上的指定文件拉取至本地当前工作目录或指定路径,同样依赖SSH认证和加密传输。
1、在终端中执行以下格式命令:
scp username@server_ip:/path/to/remote/file /path/to/local/directory/
2、输入远程用户密码完成身份验证。
3、等待进度条结束或光标返回,表示下载完成。
4、使用ls命令检查本地目标路径下是否已存在对应文件。
三、使用scp递归传输整个目录
当需传输包含子目录和多个文件的文件夹时,必须添加-r参数启用递归模式,否则命令会报错并中止。
1、上传整个本地目录到服务器:
scp -r /path/to/local/directory/ username@server_ip:/path/to/remote/parent/
2、从服务器下载整个远程目录到本地:
scp -r username@server_ip:/path/to/remote/directory/ /path/to/local/parent/
3、确认远程路径末尾有斜杠“/”,以避免生成嵌套目录结构。
4、传输过程中可观察终端实时输出的文件名列表及进度信息。
四、指定非标准SSH端口进行scp传输
若远程服务器SSH服务运行在非22端口(如2222),必须显式指定端口号,否则连接将超时失败。
1、在scp命令中加入-P参数(大写P)并紧跟端口号:
scp -P 2222 /local/file.txt user@host:/remote/path/
2、注意-P与-p(用于保留文件属性)功能完全不同,不可混淆。
3、输入密码后开始传输,行为与默认端口一致。
4、若端口值错误,终端将提示“Connection refused”或“Connection timed out”。
五、使用密钥认证免密码执行scp
配置SSH密钥对后,可跳过每次输入密码的步骤,提升自动化传输效率并增强安全性。
1、在本地生成密钥对(如尚未生成):
ssh-keygen -t ed25519
2、将公钥复制到远程服务器的authorized_keys文件中:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
3、验证密钥登录是否成功:
ssh user@host
4、确认无密码即可登录后,所有后续scp命令均无需再输入密码。










