scp是基于SSH协议的安全文件传输命令,支持本地与远程间加密上传下载、跨服务器互传,需确保目标SSH服务运行且22端口开放;常用参数包括-r(递归传目录)、-P(指定端口)、-C(启用压缩),报错如“Permission denied (publickey)”需配置密钥认证,“Connection timed out”则检查防火墙与网络连通性。

您需要在银河麒麟OS中通过命令行安全传输文件到另一台Linux或兼容SSH的设备,但不确定scp命令的具体用法、参数含义及常见报错应对方式。
确认前提条件
确保目标主机已开启SSH服务:在目标机器终端执行 sudo systemctl is-active sshd,返回“active”才可继续;若为银河麒麟V10服务器版,SSH服务默认启用,桌面版需手动启动(sudo systemctl start sshd)。
检查本地网络连通性:在麒麟终端输入 ping -c 3 目标IP,三包全通是基础,丢包或超时说明物理链路或防火墙阻断。
注意:目标主机防火墙必须放行22端口,否则连接会卡在“Connection timed out”——可临时关闭测试:sudo ufw disable(仅调试用,完成后请恢复)。
基本文件上传操作
打开麒麟终端(Ctrl+Alt+E),进入待传文件所在目录,例如:cd /home/用户名/Downloads。
执行单文件上传命令:scp filename.txt username@192.168.1.105:/home/username/。
首次连接会提示“Are you sure you want to continue connecting (yes/no/[fingerprint])?”,必须输入 yes 并回车,否则连接中断;此后该主机指纹被缓存,不再重复提示。
输入目标主机对应用户的密码后回车,进度条出现即开始传输,完成无提示即成功。
进阶传输场景处理
方法一:传输整个文件夹
加 -r 参数递归复制:scp -r myproject/ user@192.168.1.105:/opt/。不加-r会导致“not a regular file”错误,且只传文件夹名不传内容。
方法二:指定非标准SSH端口
若目标主机修改了SSH端口(如2222),必须用大写-P参数:scp -P 2222 config.conf user@192.168.1.105:/etc/。小写-p是保留文件属性参数,此处不可混淆。
方法三:跳过密码输入手动登录
配置SSH密钥对后,执行 ssh-copy-id user@192.168.1.105,后续scp全程免密;密钥未部署时强行跳过密码会直接失败,不支持空密码自动通过。
排错与关键提示
遇到“Permission denied (publickey)”:说明目标主机禁用了密码登录,只接受密钥认证——此时必须先部署公钥,不能靠反复输密码解决。
传输大文件时中断:添加 -C 启用压缩(scp -C -r bigdata/ user@192.168.1.105:/backup/),可降低带宽压力并提升成功率。
中文文件名乱码:麒麟系统默认UTF-8,但部分旧版SSH服务端未声明编码,建议先用 tar -zcf archive.tar.gz 中文文件夹/ 打包,再传tar包,解压时指定 LANG=zh_CN.UTF-8 tar -zxf archive.tar.gz。
目标路径权限不足:若提示“Permission denied”且确认密码正确,大概率是目标用户对指定目录无写入权限,改用 scp file user@ip:/tmp/ 临时路径,再登录目标机用 sudo mv /tmp/file /protected/path/ 搬移。











