pscp 是 PuTTY 带的工具,可用作 Windows 上的 scp 替代,就在 PuTTY 的安装目录,加入 PATH 就可以敲命令用。
无密上传/下载数据需要将公钥写入服务器,但是 PuTTY 用的公、私钥是 .ppk 的,不同于 ssh 的公、私钥,要另外生成。参考 [1],执行 puttygen
(也是在 PuTTY 安装目录)打开生成界面:
点 Generate 生成,需要乱动一下鼠标给它提供随机性:
然后 Save public key 和 Save private key(私钥文件中包含公钥)。
将 public key 写入服务器的 ~/.ssh/authorized_keys:
- 如果是从上图界面中的框里复制的,把结尾形如
rsa-key-20230407
的部份删掉; - 如果是从文件中复制的,公钥文件内容形如:
私钥文件内容形如:---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20230407" (公钥,有换行) ---- END SSH2 PUBLIC KEY ----
在公钥前面加上PuTTY-User-Key-File-3: ssh-rsa Encryption: none Comment: rsa-key-20230407 Public-Lines: 6 (公钥,有换行) Private-Lines: 14 (私钥) Private-MAC: (一串什么东西)
ssh-rsa
,空格间开。注意:文件中的公钥有换行,写入时要删掉。
Example
- 用
-i
指明私钥文件
@echo off
setlocal enabledelayedexpansion
set IP=1.2.3.4
set USER=iTom
set SRC=/home/itom/videos
@REM 刚才存的私钥文件叫 putty-pri.ppk
set KEY=%USERPROFILE%\.ssh\putty-pri.ppk
@REM 目录结构: extracted-frames/<video-id>_inv-video/<frame-id>.jpg
for /d %%d in (extracted-frames/*) do (
set dd=%%d
@REM 删后 10 个字符,即 `_inv-video`
set vid=!dd:~0,-10!
if not exist videos/!vid!.mp4 (
pscp -i %KEY% %USER%@%IP%:%SRC%/!vid!.mp4 videos
)
)