mac用scp上传文件到linux服务器需用加密ssh通道:单文件用scp 本地路径 用户@ip:远程路径,传目录加-r参数,非标端口用大写-p,压缩传输加-c,sftp适合交互式操作。

Mac用户需要把本地文件安全、稳定地传到远程Linux服务器,比如部署网站代码、上传配置文件或迁移项目数据,直接用终端执行scp命令最可靠——它走SSH加密通道,不依赖图形界面,断网重连后也能重新开始。
用scp命令上传单个文件
这是最常用也最稳妥的入门方式,适合传PDF、日志、脚本等独立小文件。
打开“终端”应用,输入完整命令:scp /本地/绝对路径/文件名 用户名@服务器IP地址:/远程/目标路径。
例如要把桌面的deploy.sh传到服务器192.168.5.200上用户john的~/bin目录下,就输:scp ~/Desktop/deploy.sh john@192.168.5.200:~/bin/。
回车后若未配置密钥登录,会提示输入服务器密码;输错三次会断开连接,需重新执行命令。
批量上传整个文件夹
传项目源码、静态资源包或整套配置时必须用递归模式,否则命令直接报错退出。
方法一:基础递归上传
在终端中运行:scp -r /本地/文件夹路径 用户名@服务器IP:/远程/目标路径。
例如上传本地~/Sites/myblog到服务器/var/www/:scp -r ~/Sites/myblog admin@192.168.5.200:/var/www/。
注意末尾斜杠:远程路径以/结尾(如/var/www/),myblog会被放进该目录;若写成/var/www,则myblog会覆盖/var/www本身——【这是不可逆覆盖操作】。
方法二:带压缩传输(适合大文件夹)
加-C参数启用自动压缩,减少传输体积:scp -r -C ~/Sites/myblog admin@192.168.5.200:/var/www/。
压缩只在传输过程中生效,服务器上解压后的文件与本地完全一致,但CPU占用略高。
处理非标准SSH端口
云服务器或企业内网常把SSH端口改成2222、20022等,不指定端口会卡在“Connection timed out”。
第一步:确认服务器实际SSH端口(可查服务商控制台或运行ssh -p 2222 user@ip测试连通性)。
第二步:在scp命令中插入大写-P参数:scp -P 2222 ~/data.zip deploy@47.98.123.45:/home/deploy/。
⚠️小写-p是保留文件属性参数,和端口无关;写错成小写会导致连接失败且错误提示不明确。
用sftp交互式上传(适合临时传几个文件)
当你不确定远程路径、想边连边看目录结构,或者只是偶尔传一两个文件,sftp比记命令更直观。
在终端输入:sftp 用户名@服务器IP,例如sftp alice@192.168.5.200。
成功登录后,先用ls查看远程当前目录,用lcd切换本地路径(如lcd ~/Downloads),再用put命令上传:put config.json。
如果要上传到远程子目录,先cd进去:cd /etc/nginx/conf.d,再put nginx.conf——【不cd直接put,文件默认落在用户主目录】。











