You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

容器内执行scp+sshpass命令提示“No such file or directory”求助

解决sshpass+scp抛出"no such file or directory"的排查思路

先明确你的容器环境:

root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient# uname -a
Linux sbolla-6c7b7589d8-5c2rb 3.10.0-693.5.2.el7.x86_64 #1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 GNU/Linux

针对你遇到的scp: no such file or directory错误,我整理了几个实用的排查方向,你可以按顺序尝试:

1. 先把路径问题抠细——这是最容易踩的坑

别放过任何路径细节:

  • 本地文件/目录:先在容器里用ls -l <你要传输的本地路径>确认文件确实存在,尤其是用相对路径的时候,一定要用pwd检查当前工作目录是不是你以为的那个位置。
  • 远程路径:远程主机的目标路径得真的存在,而且远程用户有访问权限。你可以先手动ssh登录远程主机,用ls验证路径;如果是要新建目录,得确保远程用户对父目录有写入权限。
  • 要是路径里有空格、特殊字符(比如!、$),一定要用单引号把路径包起来,比如:sshpass -p 'myp@ssw0rd' scp "/local/space dir/file.txt" user@remote:"/remote/space dir/"

2. 确认sshpass和scp工具本身没问题

容器环境经常会精简工具包,先做基础验证:

  • 先抛开sshpass,手动用scp <本地文件> user@remote:<远程路径>测试,如果手动能成功,再引入sshpass;如果手动都失败,说明scp本身有问题,CentOS/RHEL的容器可以装openssh-clients包(yum install openssh-clients)。
  • 检查sshpass是否正常:执行sshpass -V,如果输出版本信息就是正常的,没有的话就装一下(yum install sshpass)。

3. 排查容器环境的特殊限制

容器可能有网络或权限上的限制:

  • 网络连通性:先确认容器能ping通远程主机,再用nc -zv remote_host 22测试远程的22端口(ssh默认端口)是不是开放的,要是连不上,得先解决网络问题。
  • 容器权限:如果容器是非特权模式运行的,可能会限制一些系统调用,导致scp无法正常工作。可以临时用特权模式启动容器试试,看是不是权限的锅。

4. 检查sshpass的命令格式——参数位置错了也会报错

sshpass的参数位置很关键,错了的话scp会把它当成文件名:

  • 正确格式是:sshpass -p '你的密码' scp <本地路径> <远程路径>,注意-p后面直接跟密码(密码有特殊字符一定要用单引号包),然后才是scp命令。
  • 别把sshpass的参数放在scp后面,比如scp ... sshpass -p ...这种写法,scp会把sshpass当成要传输的文件,自然会报找不到。

5. 开调试模式看细节——精准定位问题

用scp的-v参数开启调试,能看到每一步的执行过程:

sshpass -p '你的密码' scp -v <本地路径> <远程路径>

调试输出里会显示scp尝试访问的路径、权限验证、传输步骤等,你能从里面找到到底是哪一步出了问题。

内容的提问来源于stack exchange,提问作者sbolla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:20:50