本质上是通过 Windows 和 Linux 互相之间的 SSH 连接 来实现文件传输
流程:
- Windows 机器生成 SSH 密钥并将公钥复制到 Linux 机器。
- Windows 使用
scp
进行文件传输时,利用免密码登录。
详细步骤:
1. 在 Windows 上生成 SSH 密钥对
首先,在 Windows 上生成一个 SSH 密钥对(如果你还没有,默认情况下,它会将密钥存储在 C:\Users\<用户名>\.ssh\id_rsa
):
ssh-keygen -t rsa -b 2048
2. 将公钥复制到 Linux 上
在 Windows 上,我们需要将公钥复制到 Linux 主机的 ~/.ssh/authorized_keys
文件中。你可以手动复制:
-
打开 Windows 上的公钥文件:
type C:\Users\<用户名>\.ssh\id_rsa.pub
-
复制输出的公钥内容。
-
然后,通过 SSH 登录到你的 Linux 主机:
ssh user@remote_host
-
在 Linux 上编辑(或者创建)
~/.ssh/authorized_keys
文件:nano ~/.ssh/authorized_keys
-
将从 Windows 复制过来的公钥粘贴进去并保存。
-
设置正确的权限:
chmod 600 ~/.ssh/authorized_keys
3. 确保 SSH 配置允许公钥认证
如果没有特殊配置,Linux 默认允许公钥认证,但可以检查一下 /etc/ssh/sshd_config
文件,确保有以下配置:
PubkeyAuthentication yes
4. 使用 scp
进行免交互文件传输
完成上述配置后,你可以在 Windows 上直接使用 scp
命令进行文件传输了。由于 SSH 免密配置已经成功,scp
不会再要求输入密码。
-
从 Windows 向 Linux 上传文件:
scp C:\path\to\file user@remote_host:/path/to/destination
-
从 Linux 向 Windows 下载文件:
scp user@remote_host:/path/to/file C:\path\to\destination