SCP是Mac向Linux服务器安全传文件的加密工具,支持单文件上传、递归传目录、自定义端口、密钥免密登录及压缩传输五种方法。

如果您在Mac上需要将本地文件或文件夹安全地传输到远程Linux服务器,SCP(Secure Copy Protocol)是最常用且加密可靠的命令行工具。以下是多种具体可行的操作方法:
一、使用scp上传单个文件到服务器
该方法适用于传输普通文本、图片、压缩包等独立文件,利用SSH加密通道确保传输过程不被窃听或篡改。
1、打开“终端”应用程序。
2、输入以下格式的命令:scp /本地/文件/完整路径 用户名@服务器IP地址:/远程/目标/路径。
3、例如,将桌面的report.pdf上传至服务器192.168.1.100上用户admin主目录下的docs文件夹:scp ~/Desktop/report.pdf admin@192.168.1.100:~/docs/。
4、按回车后,若未配置密钥认证,则提示输入服务器密码;输入正确密码后即开始传输。
二、使用scp上传整个文件夹到服务器
当需迁移项目目录、配置集或批量资源时,必须启用递归模式,否则命令会报错并拒绝执行。
1、确保目标文件夹在本地存在且路径无空格或特殊字符(如有,用引号包裹)。
2、在终端中运行带-r参数的命令:scp -r /本地/文件夹/路径 用户名@服务器IP地址:/远程/目标/路径。
3、例如,上传本地~/Projects/myapp目录到服务器/var/www/html下:scp -r ~/Projects/myapp admin@192.168.1.100:/var/www/html/。
4、注意末尾斜杠:若远程路径以/结尾,则myapp将被放入该目录内;若无斜杠,则myapp将被重命名为同名目录并覆盖原位置。
三、使用scp指定非标准SSH端口传输
部分云服务器或企业环境禁用默认22端口,改用其他端口(如20022、2222等),此时必须显式声明端口号,否则连接将超时失败。
1、确认服务器实际监听的SSH端口(可通过服务商控制台或sshd_config文件查看)。
2、在scp命令中加入大写-P参数(注意不是小写-p):scp -P 端口号 /本地/路径 用户名@服务器IP地址:/远程/路径。
3、例如,使用端口20022上传config.tar.gz:scp -P 20022 ~/Downloads/config.tar.gz deploy@47.98.123.45:/home/deploy/backups/。
4、若端口错误,终端将显示Connection refused或Connection timed out,需核对端口与防火墙设置。
四、使用scp配合SSH密钥实现免密传输
避免每次传输都手动输入密码,提升自动化效率和安全性;前提是已在本地生成密钥对,并将公钥部署至服务器~/.ssh/authorized_keys中。
1、检查本地是否已有可用密钥:ls -l ~/.ssh/id_rsa.pub;若无,先运行ssh-keygen -t rsa生成。
2、将公钥复制到服务器(仅需执行一次):ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP地址。
3、此后所有scp命令均无需密码,例如:scp -r ~/Sites/blog/ user@server.com:/var/www/。
4、若仍提示密码,检查服务器/etc/ssh/sshd_config中PubkeyAuthentication yes是否启用,并重启sshd服务。
五、使用scp启用压缩加速大文件传输
在网络带宽受限或传输大量文本类文件(如日志、源码)时,启用压缩可显著缩短耗时,尤其适用于高延迟链路。
1、在scp命令中添加-C选项(大写C),表示启用压缩传输。
2、组合常用参数:-C(压缩)、-v(显示进度)、-r(递归)可同时使用。
3、例如,压缩传输一个大日志目录:scp -Cvr ~/Logs/2026-03/ admin@10.0.1.5:/backup/logs/。
4、传输过程中终端将实时输出压缩率与传输速率,完成时自动解压,无需额外操作。

















