scp是最直接的上传方式,Linux/macOS终端一行命令即可完成:scp /本地路径 user@host:/远程路径,注意本地在前、远程在后,且需确保SSH权限、路径正确及目标目录写入权限。

用 scp 命令上传最直接,Linux/macOS 终端一行搞定
如果你有服务器 SSH 权限,scp 是最快、最轻量的方式,不需要额外装工具或配 FTP。它走 SSH 加密通道,安全性也够用。
常见错误是路径写反(本地在前、远程在后),或者没加用户名和主机地址。正确格式是:
scp /path/to/local/index.html user@host:/var/www/html/
注意几点:
-
/var/www/html/是常见 Web 根目录,但实际路径得看你的 Web 服务配置(比如 Nginx 的root或 Apache 的DocumentRoot) - 如果目标目录需要 root 权限(比如系统级
/var/www),而你登录用户没写入权限,会报Permission denied—— 此时别急着切 root,先ls -ld /var/www/html看属组,考虑把用户加进对应组,或改用sudo cp配合临时上传到家目录再移动 - Windows 用户可用
scp(Win10 1809+ 自带 OpenSSH)或pscp(PuTTY 工具集),语法一致
VS Code 插件 SFTP 可视化同步,适合频繁更新
每次改完 HTML 都敲命令太麻烦?用 VS Code + SFTP 插件能自动监听保存并上传,省去手动触发。
立即学习“前端免费学习笔记(深入)”;
关键不是装插件,而是配对 sftp.json 里的几个字段:
-
host和port必须准确,port默认 22,改过 SSH 端口的要显式写上 -
remotePath必须以/开头,且是绝对路径(比如/var/www/html/),填相对路径会导致上传到用户家目录下,页面打不开 - 如果服务器禁用了密码登录(只允许密钥),必须提前在
privateKey字段指定本地私钥路径,且该文件权限不能太宽松(chmod 600否则 SSH 拒绝读取)
上传后 403 Forbidden?检查文件权限和 SELinux(仅 CentOS/RHEL)
文件明明传上去了,浏览器却报 403 Forbidden,大概率不是上传失败,而是权限或安全策略卡住了。
先快速验证:
- 执行
ls -l /var/www/html/index.html,确保文件对 Web 进程可读(至少-rw-r--r--,即 644) - 如果是 CentOS 7/8,运行
getenforce—— 若返回Enforcing,说明 SELinux 在起作用,需补一句:sudo restorecon -v /var/www/html/index.html - Nginx/Apache 进程用户(如
www-data或apache)是否对父目录有执行(x)权限?/var/www/html目录权限应为drwxr-xr-x(755),否则进不去
用 git push 替代手动上传?只适合有部署脚本的场景
看到别人“git push 就上线”,别直接照搬。这背后依赖的是服务器上的 git hook(比如 post-receive)自动检出文件到 Web 目录,不是 git 本身能发布。
真要这么干,得满足三个条件:
- 服务器上已初始化 bare repo(如
/opt/repo/site.git),且设置了post-receive脚本 - 脚本里明确
git --work-tree=/var/www/html --git-dir=/opt/repo/site.git checkout -f,路径一个字母都不能错 - Web 目录(
/var/www/html)的所有者必须是运行 hook 的用户,否则checkout会因权限失败,且不会报错到客户端
没有现成脚本时,硬套 git push 只会让事情更难排查。


















