windows使用scp向linux传文件的方法

传文件时有密码验证,代码中为了避免输入密码,可以在windows中生成公钥,然后放到linux的.ssh文件夹中;

步骤:

①windows安装openssh,方法参考https://blog.youkuaiyun.com/qq_33481635/article/details/118052151
使用powershell运行下面的指令
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’ ,查询有关openssh安装情况

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0等待ssh服务器安装

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0等待ssh客户端的安装

②生成密钥的方式,参考文档https://blog.youkuaiyun.com/weixin_46144186/article/details/124062702
使用powershell运行下面的指令
ssh-keygen,出现判断时,直接回车即可;
最后在路径C:\Users\Administrator.ssh下会生成一个id_rsa.pub,将这个文件拷贝到linux的./ssh目录下,并重命名文件的名称为authorized_keys,若有这个文件,直接追加:cat id_rsa.pub >> authorized_keys即可;

③现在可以在windows中使用命令行传文件了(使用的root,其他的用户好像不能传,能传再更新此文档)
SCP -r D:/Project/Publish/* root@192.168.1.11:/root/share/ --整个文件夹内文件,包含子文件夹
SCP D:\downloads\kafka_2.12-3.0.0.tgz root@192.168.1.11:/root/software --单个文件

④若使用代码的话,参考文档https://blog.youkuaiyun.com/shayueqing/article/details/124485102
在这里插入图片描述
在这里插入图片描述
(注意OpenSSH文件夹需整个的拷贝)
scp模仿上面的写法;(其他方式写的话吗,在waitForFinished时,总是返回false,使用上述的例子好像不会)

注意:代码使用scp时,安装路径下的C:\Windows\System32\OpenSSH路径可能会访问不到,所以将此路径拷贝一份出来,放到其他可以访问到的路径即可,代码就可以调通scp,这个坑了我一两天,使用批处理bat里面放scp的指令也不行,使用system()直接调用也不行,但是使用鼠标双击却可以,总之,代码调用时,就是没有权限能访问到openssh目录。
-------------------------------就这些内容,记录一下-------------------------------

Windows使用 `scp`(Secure Copy Protocol)将文件输到 Linux 服务器,需要 Windows 系统支持 OpenSSH 客户端。从 Windows 10 和 Windows Server 2019 开始,OpenSSH 客户端默认已安装。如果没有安装,你可以手动安装或者使用其他工具如 `PuTTY` 的 `pscp`,但我们这里主要介绍标准的 `scp` 命令。 --- ## ✅ 使用 `scp` 从 WindowsLinux 文件 ### ✅ 前提条件: - Linux 服务器上已安装并运行了 `sshd`(SSH 服务)。 - Windows 上已安装 OpenSSH 客户端(可通过 PowerShell 或命令提示符使用 `scp` 命令)。 - 确保 Windows 可以通过网络访问 Linux 服务器的 22 端口(默认 SSH 端口)。 --- ## 🔧 示例命令 ### 📁 1. 从 Windows文件Linux 服务器 ```bash scp C:\path\to\local\file.txt username@linux_server_ip:/path/to/remote/directory ``` **示例:** ```bash scp C:\Users\John\Desktop\test.txt john@192.168.1.100:/home/john/ ``` 输入密码后,文件 `test.txt` 将被上Linux 服务器的 `/home/john/` 目录下。 --- ### 📁 2. 从 Linux 下载文件Windows ```bash scp username@linux_server_ip:/path/to/remote/file.txt C:\path\to\local\directory ``` **示例:** ```bash scp john@192.168.1.100:/home/john/report.pdf C:\Users\John\Desktop\ ``` --- ### 📁 3. 上整个文件夹(使用 `-r` 参数递归复制) ```bash scp -r C:\path\to\local\folder john@192.168.1.100:/home/john/ ``` --- ## 💡 使用 PowerShell 你也可以在 PowerShell 中使用相同的 `scp` 命令: ```powershell scp C:\temp\file.txt john@192.168.1.100:/home/john/ ``` --- ## 🔐 使用密钥认证(免密码登录) 如果你配置了 SSH 密钥认证,可以避免每次输入密码: ```bash scp -i C:\Users\John\.ssh\id_rsa C:\temp\file.txt john@192.168.1.100:/home/john/ ``` --- ### ✅ 如何检查 Windows 是否安装了 OpenSSH 客户端 在命令提示符或 PowerShell 中运行: ```bash scp -V ``` 如果输出类似 `OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Mar 2020`,则表示已安装。 如果没有安装,可以按以下步骤安装: ### 安装 OpenSSH 客户端(Windows 10/11) 1. 打开“设置” → “应用” → “可选功能”。 2. 点击“添加功能”。 3. 搜索并安装 **OpenSSH 客户端**。 --- ## ✅ 使用 GUI 工具替代 scp 如果你不习惯命令行,也可以使用以下工具进行文件输: - **WinSCP**:专为 Windows 设计的图形化 SCP/SFTP 工具。 - **FileZilla**:支持 SFTP 协议,也可以连接 Linux 服务器。 - **MobaXterm**:集成终端和 SFTP 文件输功能。 --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值