向Ubuntu服务器上传文件的正确命令咨询及报错问题排查
向Ubuntu服务器上传文件的正确命令咨询及报错问题排查
我来帮你分析这两个报错的原因,再告诉你正确的操作方式~
报错原因拆解
第一个报错:Permission denied (publickey)
你在本地Mac终端直接用root用户尝试上传文件,出现这个错误主要有两个原因:
- 多数云服务器默认禁用了
root用户的密码登录权限,且你没有给root用户配置本地Mac的SSH公钥,导致服务器拒绝了你的连接请求。 - 从安全规范来说,也不推荐直接用
root进行日常文件传输操作,优先使用服务器提供的普通用户(比如你用到的ubuntu用户)更稳妥。
第二个报错:No such file or directory
你已经登录到Ubuntu服务器的终端后执行scp命令,试图访问/Users/xyz/Downloads/model/api.py——这个路径是本地Mac的文件路径,服务器上根本不存在对应的目录结构,自然会提示找不到文件。这种场景下,你应该在本地Mac的终端(而非服务器终端)执行传输命令。
正确的上传操作步骤
直接在本地Mac的终端窗口中执行以下命令即可(无需提前登录服务器):
scp /Users/xyz/Downloads/model/api.py ubuntu@myserverip:/home/ubuntu/virtualweb
注:如果传输的是目录而非单个文件,才需要加上
-r参数,单个文件可以省略
命令参数说明
scp:用于本地与远程服务器之间文件传输的工具/Users/xyz/Downloads/model/api.py:本地Mac上待上传文件的完整路径ubuntu@myserverip:服务器的普通用户名(这里是ubuntu)+ 服务器IP地址/home/ubuntu/virtualweb:服务器上接收文件的目标路径
额外注意事项
- 如果执行命令时要求输入密码,直接输入
ubuntu用户的登录密码即可;若仍出现公钥相关错误,建议把本地Mac的SSH公钥添加到服务器~/.ssh/authorized_keys文件中,后续传输就无需重复输密码。 - 确保服务器上的目标路径
/home/ubuntu/virtualweb已经存在,若不存在,可先登录服务器执行mkdir -p /home/ubuntu/virtualweb创建该目录。
备注:内容来源于stack exchange,提问作者user9437856
相关产品推荐
相关产品推荐

