资讯动态

SCP拷贝文件命令以及其它上传下载文件方式总结

发布时间:2026/8/7 5:28:58 来源:尧图企业网站定制
目录1.ssh服务1.1.简介1.2.Linux安装配置 SSH 服务服务端1.3.Windows 使用 SSH1.4.基础用法1.5.密钥认证配置免密码登录2.scp2.1.简介2.2.常见示例场景2.3.Linux和Windows文件互传2.4.传输大文件优化2.5.常见问题以及解决方法3.xshell和xftp4.OpenSSH5.SecureCRT6.总结1.ssh服务1.1.简介sshSecure Shell是一种网络协议用于在不安全网络中提供安全的远程登录和文件传输功能。通过加密通道远程控制服务器或执行命令替代不安全的telnet。默认端口22可通过-p参数修改。主要用途有用途描述远程终端登录登录远程 Linux 主机并控制它安全文件传输使用scp或sftp实现加密文件传输命令远程执行在远程机器上执行脚本、命令隧道和端口转发安全传输 HTTP、VNC 等不安全流量Git 拉取/推送Git 服务常用 SSH 认证进行安全通信SSH 服务组件有组件说明sshdSSH 服务器守护进程监听 22 端口sshSSH 客户端命令行程序scp使用 SSH 协议传输文件sftp类 FTP 的 SSH 安全文件传输工具~/.ssh/authorized_keys服务器端保存客户端公钥的文件1.2.Linux安装配置 SSH 服务服务端安装ssh服务器端Ubuntu默认没有安装ssh的server需要安装麒麟的系统都默认安装了。sudo apt-get install openssh-server配置文件路径/etc/ssh/sshd_config常见配置项说明配置项描述Port 22设置监听端口可自定义为非默认端口PermitRootLogin no禁止 root 用户远程登录PasswordAuthentication yes/no是否允许密码登录PubkeyAuthentication yes是否允许公钥登录AllowUsers user1 user2只允许指定用户登录重启服务使配置生效sudo systemctl restart sshd sudo systemctl start sshd sudo systemctl enable sshd sudo systemctl status sshd1.3.Windows 使用 SSH方法 1安装 OpenSSH 客户端Windows 10/11 内置# 启用OpenSSH客户端设置→应用→可选功能→添加OpenSSH客户端 ssh userhost # 直接在PowerShell或CMD中使用方法 2使用 PuTTY图形化 SSH 客户端下载 PuTTY输入服务器 IP 和端口。选择 SSH 协议点击「Open」连接。1.4.基础用法1.远程登录# 格式ssh [用户名][服务器IP或域名] ssh user192.168.1.100 # 连接服务器需输入密码 ssh userexample.com # 通过域名连接 # 默认端口22 ssh userhost # 指定端口如2222 ssh -p 2222 userhost # 直接执行远程命令 ssh userhost ls -l /home2.指定端口与密钥ssh -p 2222 user192.168.1.100 # 指定非标准端口2222 ssh -i ~/.ssh/id_rsa userhost # 使用私钥认证免密码3.执行单次命令ssh userhost ls -l # 远程执行ls -l命令并返回结果4.端口转发隧道# 本地端口转发本地8080→远程host:80 ssh -L 8080:localhost:80 userhost # 远程端口转发远程8080→本地80 ssh -R 8080:localhost:80 userhost # 动态端口转发SOCKS5代理本地1080 ssh -D 1080 userhost1.5.密钥认证配置免密码登录1.生成密钥对ssh-keygen -t rsa -b 4096 # 生成RSA密钥对默认存储在~/.ssh/id_rsa2.将公钥复制到服务器ssh-copy-id userhost # 自动复制公钥到服务器的~/.ssh/authorized_keys # 手动复制适合无ssh-copy-id的系统 cat ~/.ssh/id_rsa.pub | ssh userhost mkdir -p ~/.ssh chmod 700 ~/.ssh cat ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys2.scp2.1.简介scpSecure Copy是 Linux/Unix 系统中用于通过 SSH 加密传输文件和目录的命令常用于服务器间文件拷贝或本地与服务器互传。基本语法scp [选项] [源文件/目录] [目标用户目标主机:目标路径]源与目标本地→远程scp local_file userhost:/remote/path远程→本地scp userhost:/remote/file local_path远程→远程scp user1host1:/file user2host2:/path常用选项-r递归拷贝目录如scp -r dir/ userhost:/remote/。-P port指定 SSH 端口默认 22如scp -P 2222 file userhost:。-C压缩传输数据节省带宽如scp -C bigfile userhost:。-p保留文件时间戳、权限等属性。-i key_file使用指定私钥认证替代密码如scp -i id_rsa file userhost:。2.2.常见示例场景1.本地文件上传到远程服务器# 上传本地文件到远程用户家目录 scp /local/path/file.txt user192.168.1.100:~ # 上传目录需加-r scp -r /local/dir user192.168.1.100:/remote/dir2.从远程服务器下载文件到本地# 下载远程文件到本地当前目录 scp user192.168.1.100:/remote/file.txt . # 下载远程目录需加-r scp -r user192.168.1.100:/remote/dir /local/path3.远程服务器间拷贝需本地中转# 从A服务器拷贝到B服务器通过本地临时中转 scp userAhostA:/file.txt userBhostB:/path/ # 或直接指定跳板机需SSH配置支持 scp -o ProxyCommandssh -W hostB:22 gateway userAhostA:/file userBhostB:2.3.Linux和Windows文件互传在 Linux 和 Windows 系统间用scp拷贝文件需先确认环境支持Linux 自带 scpWindows 可通过 Git Bash 或 WSL 使用。1.从 Linux 拷贝文件到 Windows假设 Linux 主机文件路径为/path/to/fileWindows 主机 IP 为192.168.1.100目标用户为user# 拷贝单个文件到Windows指定目录需提前在Windows创建目标路径 scp /path/to/file user192.168.1.100:/c/Users/user/Documents/ # 拷贝文件夹需加 -r 参数 scp -r /path/to/folder user192.168.1.100:/c/Users/user/Documents/Windows 端接收路径说明/c/Users/user/Documents/对应 Windows 的C:\Users\user\Documents路径。2.从 Windows 拷贝文件到 Linux在 Git Bash 或 WSL 中执行假设 Windows 文件路径为/c/Users/user/Documents/fileLinux 主机 IP 为192.168.1.101目标用户为user# 从Windows拷贝文件到Linux scp /c/Users/user/Documents/file user192.168.1.101:/home/user/ # 拷贝文件夹加 -r 参数 scp -r /c/Users/user/Documents/folder user192.168.1.101:/home/user/3.跨系统权限问题的通用技巧使用密钥认证替代密码推荐避免密码输入问题提升安全性和自动化能力。操作步骤以 Linux→Windows 为例1在 Linux 生成密钥对ssh-keygen -t rsa2将公钥~/.ssh/id_rsa.pub复制到 Windows 的 OpenSSH 认证文件需先在 Windows 启用 OpenSSH 服务。3传输时无需输入密码scp -i ~/.ssh/id_rsa /path/file user192.168.1.100:/target/2.4.传输大文件优化1.压缩传输减少带宽占用加-C参数启用压缩适合网络带宽有限的场景scp -C /data/bigfile.iso user192.168.1.100:/tmp/原理压缩数据后传输可能增加 CPU 消耗但能降低实际传输的数据量。2.限速传输避免带宽被占满用-l参数指定带宽单位KB/s例如限制到 10MB/s10240KB/sscp -l 10240 /data/bigfile.iso user192.168.1.100:/tmp/3.断点续传推荐用 rsync 替代 scpscp本身不支持断点续传若文件中途传输失败需重传建议改用rsync需远程主机支持# 本地→远程-a保持属性-h人类可读-P断点续传 rsync -ahP /data/bigfile.iso user192.168.1.100:/tmp/优势中断后可继续传输且速度通常比scp更快仅传输差异部分。4.后台传输防止会话断开用screen或tmux工具创建后台会话避免因 SSH 断开导致传输中断1)安装screen若未安装sudo apt install screen # Debian/Ubuntu sudo yum install screen # CentOS/RHEL2)创建会话并执行 scpscreen -S scp_transfer scp /data/bigfile.iso user192.168.1.100:/tmp/3)按CtrlAD分离会话传输会在后台继续重新连接用screen -r scp_transfer。5.分块传输超大文件场景若文件超过单个数据包限制极少情况可先用split分割文件传输后再合并1)本地分割文件每块 1GBsplit -b 1G /data/超大文件.iso /data/文件块-2) 传输所有块scp /data/文件块-* user192.168.1.100:/tmp/3) 远程合并文件cat /tmp/文件块-* /tmp/超大文件.iso6.优化 SSH 配置提升稳定性修改本地~/.ssh/config若无则创建添加以下配置减少断开Host * # 每60秒发送一次保持连接的数据包 ServerAliveInterval 60 # 超过3次未响应则断开防止假死 ServerAliveCountMax 32.5.常见问题以及解决方法1认证失败密码 / 密钥问题提示password:后输入正确密码仍报错Permission denied。密钥认证时提示Agent admitted failure to sign using the key。解决方法密码认证确认用户名、密码正确且目标用户有 SSH 登录权限可先尝试ssh userhost能否登录。密钥认证确保私钥文件权限正确本地私钥需为600权限如chmod 600 id_rsa。用ssh-add将私钥添加到密钥代理ssh-add ~/.ssh/id_rsa。检查目标主机~/.ssh/authorized_keys是否包含公钥且文件权限为600、目录~/.ssh权限为700。2连接拒绝Connection refused提示ssh: connect to host ... port 22: Connection refused。解决方法确认目标主机 IP 正确且网络可达用ping host测试。检查目标主机 SSH 服务是否启动systemctl status sshd若未启动则systemctl start sshd。若目标主机端口非默认 22需用-P port指定如scp -P 8022 file userhost:。3权限不足Permission denied传输时提示scp: ...: Permission denied。无法写入目标路径如远程目录无写入权限解决方法确认目标路径的权限若为远程目录可尝试用sudo提升权限如scp file roothost:/path。若目标路径为用户家目录确保用户对该目录有写权限远程登录后用ls -la查看权限。4路径错误No such file or directory提示scp: /path/to/file: No such file or directory。解决方法检查源路径或目标路径是否正确本地路径用绝对路径更稳妥如/home/user/file。远程路径以:开头注意路径格式正确scp file userhost:/tmp/绝对路径错误scp file userhost:tmp/缺少/会被识别为用户家目录下的tmp5传输中断 / 速度慢大文件传输时断开或速度远低于预期。提示packet_write_wait: Connection to ... broken by remote host。解决方法大文件传输用-C压缩传输scp -C bigfile userhost:或改用rsync支持断点续传。若网络不稳定可分块传输或使用screen/tmux保持会话后台运行。限速 / 带宽问题用-l指定带宽如scp -l 1024 file userhost:限制 1MB/s。检查网络链路是否拥堵如服务器带宽不足、防火墙限速。6目录传输失败拷贝目录时提示scp: ...: is a directory。解决方法目录传输必须加-r选项递归拷贝如scp -r local_dir userhost:/remote_dir # 正确 scp local_dir userhost:/remote_dir # 错误缺少-r7特殊字符 / 空格路径问题路径含空格或特殊字符时提示错误。解决方法用引号包裹路径如scp /local/path with space/file.txt userhost:/remote/path with space/8本地与远程系统差异远程为 Windows 系统通过 WSL/SSH 服务时路径格式不兼容。文件名大小写敏感问题Linux 区分大小写Windows 不区分。解决方法Windows 远程路径用双反斜杠或正斜杠如scp file userhost:/c/Users/user/Documents/ # 正确 scp file userhost:C:\\Users\\user\\Documents # 正确传输时注意文件名大小写避免因误写导致找不到文件。9防火墙 / SELinux 限制公司内网或云服务器因防火墙规则无法连接。SELinux 阻止文件传输提示Permission denied但权限正确。解决方法联系管理员开放 SSH 端口默认 22或确认云服务器安全组规则允许访问。临时关闭 SELinuxsetenforce 0测试若正常则需配置 SELinux 策略如chcon -t ssh_home_t /path。3.xshell和xftpXshell 和 Xftp 是两款由 NetSarang 公司开发的、运行在 Windows 平台上的软件通常一起配合使用来进行远程服务器的管理和文件传输:Xshell功能定位是一个强大的安全终端模拟软件支持 SSH、SFTP、TELNET、RLOGIN 等协议主要用于在 Windows 系统下安全地访问 Unix/Linux 主机让用户能通过 Windows 界面远程控制远端不同系统的服务器执行命令、编辑文件和进行系统管理等任务。主要特点安全性高支持 SSH1、SSH2 协议以及密码、DSA 和 RSA 公开密钥等用户认证方法采用多种加密算法对所有流量进行加密防止数据在传输过程中被窃取或篡改。用户体验好具有标签环境、广泛拆分窗口、同步输入和会话管理等功能方便用户同时管理多个远程连接节省时间并提高工作效率。还支持布局切换键盘映射兼容性好不需要用户手动修改映射。功能丰富有丰富的外观配色方案和样式选择支持 UTF8 编码可在一个终端屏幕显示多种语言方便处理不同语言编写的数据库支持 VB 脚本用户可使用脚本自动处理单调、重复的任务支持 IPv6满足不同网络环境的需求。Xftp功能定位是一个功能强大的 FTP 和 SFTP 文件传输软件用于在 Windows 与 Unix/Linux 系统之间安全地传输文件。主要特点安全可靠支持 SFTP 协议对所有通过该软件的网络流量进行加密提供安全的数据传输环境防止数据被截获或泄露。界面友好采用标准的 Windows 风格向导界面直观易于使用能与其他 Windows 应用程序紧密协同工作适应不同层次用户的需求。功能强大具有同步功能可以帮助用户同步文件和文件夹以及远程与本地文件夹的路径支持多任务处理允许用户在单个窗口打开多个会话通过会话选项卡界面在不同服务器之间轻松传输文件提供自定义编辑器选项用户可选择自己喜欢的编辑器而不是使用默认的 Windows 记事本。有一个免费的网站可以下载Xshell-Xmanager-Xftp 8下载-安全终端模拟软件-Xshell中文网下载试用提交信息后会在你留下的邮箱中收到复制到浏览器中打开即可激活就可使用了。xftp是一样的办法也可免费使用。用法比较简单就不在这里赘述了。4.OpenSSHOpenSSH 是一款用于安全远程连接和计算机管理的工具套件它通过加密技术来保障通信安全其主要功能包括远程登录、命令执行、文件传输和端口转发等。OpenSSH采用C/S架构, 包含客户端和服务器两部分其中客户端用于连接远程服务器。服务器在远程服务器上运行接受客户端的连接请求。核心工具常用:ssh远程登录 / 执行命令客户端sshdSSH 服务端守护进程scp安全文件复制类似 cpsftp安全文件传输类似 ftpssh-keygen生成密钥对免密登录ssh-copy-id把公钥传到服务器ssh-agent / ssh-add密钥缓存免输密码OpenSSH 最初是为 Linux 系统开发的现在也支持包括 Windows 和 macOS 在内的多种操作系统。它的使用方法可参考下面的博客Windows 上的 OpenSSH安装、配置和使用指南 - 商君治国安邦之张莽 - 博客园5.SecureCRTSecureCRT是一款支持 SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 等协议的终端仿真程序支持标签化SSH对话从而可方便地管理多个SSH连接是Windows下登录UNIX、Linux服务器主机的软件。核心功能多协议支持SSH1/SSH2加密远程连接支持密钥认证RSA、DSA、ECDSA。Telnet/RLOGIN兼容老旧系统的明文协议。串口连接支持通过 COM 口连接硬件设备如路由器、交换机。会话管理保存服务器配置主机名、端口、用户名、密码 / 密钥支持分组管理。快速切换会话标签页支持会话克隆右键→Clone Session。高级终端功能多标签页同时管理多个连接支持拖拽调整顺序。分屏会话在同一窗口分割显示多个终端Session → Split Horizontally/Vertically。命令高亮支持语法高亮如 Python、Bash和自定义配色方案。自动完成输入命令时自动补全历史命令或文件路径。文件传输集成SecureFX需单独安装或购买支持 SFTP/FTP 传输。拖放文件直接从本地资源管理器拖拽文件到终端窗口上传。脚本与自动化支持 VBScript、Python 脚本自动执行重复性任务如批量配置服务器。示例脚本 自动登录并执行命令 Sub Main() crt.Session.Connect /SSH2 userhost -pw password crt.Screen.Send ls -l vbCr crt.Screen.WaitForString End Sub6.总结除了上面介绍的几个ssh远程操作工具当然还有很多的其它工具这里就不一一介绍了。好的工具对提升工作效率有很大的意义。上面介绍的几个都是工作当中我觉得好用的方式SCP命令最简单也最为使用啥软件也不用装但是不直观。其它几个有界面的操作简单避免了复杂的输命令。其实这些在不用的场合都有使用它的场景。各有各的用处在各自的应用场景上都比较好用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价