SCP文件传输

主要参考: scp命令 Linux和Windows文件互传

生成密钥

按照原始博客操作即可, 在windows上使用

1
ssh-keygen -t rsa

然后一直回车,生成一个密钥在 C:\Users\PC.ssh\id_rsa.pub然后复制其中的内容到Linux的如下文件中:

1
/home/zpd/.ssh/authorized_keys

然后就可以愉快玩耍了

主要如果只是复制到普通用户的这个文件中,那么你只能把文件上传到这个用户具有写权限的目录中

实践

比如在windows上把当前路径下的 main.c传到Linux下的 /home/zpd/temp/目录,只需要运行如下命令:

1
scp main.c zpd@<my ip>:/home/zpd/Temp/

自定义命令

我自己自定了两个powershell命令:push_file, pull_file分别负责从Windows上给Linux传输文件,以及从上面拉取文件。把下面这段代码粘贴到你的powershell配置文件中:

注意:我在Linux上建立了一个Windows_Linux_Share文件夹用于平时的文件交换
假设你的用户名为: user, 你服务器的IP地址为 192.168.0.1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# scp  
# push file from local windows
function push_file{
param(
[switch] $recurse
)
if ($recurse){
scp -r $args user@192.168.0.1:/home/user/Windows_Linux_Share
}else{
scp $args user@192.168.0.1:/home/user/Windows_Linux_Share
}
}
# pull file from remote linux
function pull_file{
param(
[switch] $recurse
)
if ($recurse){
scp -r user@192.168.0.1:/home/zpd/Windows_Linux_Share/$args ./
}else{
scp user@192.168.0.1:/home/zpd/Windows_Linux_Share/$args ./
}
}

使用如下语法打开powershell的配置文件:

1
notepad $profile

然后你的记事本就会打开这个配置文件,把他粘贴到最后即可,然后回到powershell中执行命令

1
. $profile

让刚才那两个命令生效。使用方法如下:
这里我在我家加目录下建立了一个 ~/Windows_Linux_Share/的共享文件夹。
文件的上传:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 单个文件(非文件夹)
push_file <path to your single file in windows>

# 文件夹及其内部所有文件(就是scp的原本语法)
push_file -r <path to your folder in windows>


下载文件# 单文件
pull_file <path to your single file in Linux>


# 文件夹及其内部所有文件
pull_file -r <path to your folder in Linux>

两个命令的调用格式是类似的


SCP文件传输
https://zongpingding.github.io/2024/03/26/scp/
Author
Eureka
Posted on
March 26, 2024
Licensed under