Hello! 欢迎来到小浪云!


免密码从windows复制文件到linux


无需密码从windows系统向linux系统复制文件 2018-7-25 作者: 张子阳 分类: linux

有时,我们需要通过编程的方式将文件从Windows系统传输到Linux系统,本文将详细说明如何实现这一操作。

一个实际的案例是:现有程序运行在Windows服务器上,需要将一些文件传输到运行在Linux上的hive数据仓库中。虽然可能有更直接的方法将文件发送给Hive,但一种间接方法是先将文件传输到Linux,然后在Linux上使用load data命令将其导入Hive。

下载并安装PuttyPutty不仅可以作为连接Linux系统的客户端,还提供了一个名为pscp.exe的工具,用于从Windows系统直接复制文件到Linux系统。如果尚未安装Putty,请访问Putty官网下载并安装:https://www.php.cn/link/ee2584054b4963d51cf5e2387604cd86

使用pscp传输文件在Windows系统上,Putty的默认安装路径为:C:Program FilesPuTTY。打开cmd命令行工具,使用cd命令进入到该目录。接着,在D盘根目录创建一个名为hello.txt的文件,尝试将其发送到Linux上的/root/downloads文件夹中。

C:Program FilesPuTTY>pscp D:hello.txt root@192.168.1.56:/root/downloads root@192.168.1.56’s password: hello.txt | 0 kB | 0.0 kB/s | ETA: 00:00:00 | 100%

由于尚未配置授权密钥,此步骤仍然需要输入密码,密码输入时没有回显。正确输入root密码后,可以看到传输已经成功。

生成客户端密钥实际上,pscp传输文件的认证方式与ssh一致,建议先阅读这篇文章:在Linux上配置ssh实现免密登录。

接下来,使用Putty自带的另一个工具puttygen来生成密钥对。该工具同样位于C:Program FilesPuTTY文件夹中。

免密码从windows复制文件到linux运行pscp

选择RSA,然后点击Generate。接着移动鼠标,通过鼠标位置生成随机数来生成Key。

免密码从windows复制文件到linux生成密钥

在对话框中点击“save private key”,将私钥保存为key.ppk,并存储在D:根目录下。

免密码从windows复制文件到linux保存私钥

复制对话框上方文本框中的公钥,然后执行以下命令,将公钥添加到Linux系统的authorized_keys文件中:

echo “ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAkOCtqdeNszoEszhJvO9WMBsydQ12GQMsMtjD/VBgWl8JilwanfMrjH55SA3YBuw9Dtmy+epMl9fcuoCOMFbYq3sxmKHwft2x9m+g0chPDioeL9Mgscrx+1hbJQokVbS7xnWc2uKrTYcMvs+x2KsFoT5YTEdCbRGXhaTWt0e1y3gUNyNH1AbWlH1m9Rwvg8BICuNcqP/Qd5NtktOoFzO3EBSrKdUrNuIiQX3eYJ62d3nomKmjPr6/Bcx47VqqK+b7eU1Ywmz7SGow9FZpBOPxVJiA6GC87eksH4wxXhGB2cp+d88t29az5f+vsbDbsSGCSHxrbkKtolFBnONQNpUqKw== rsa-key-20180725” >> ~/.ssh/authorized_keys再次复制文件再次执行pscp命令,使用-i参数指定刚才生成的私钥路径,就可以成功将文件复制到Linux系统了。

C:Program FilesPuTTY>pscp -i D:key.ppk D:hello.txt root@192.168.1.56:/root/downloads hello.txt | 0 kB | 0.0 kB/s | ETA: 00:00:00 | 100%

这样,通过命令行将文件发送到Linux系统就完成了,接下来当需要通过编程方式发送文件时,可以启动一个cmd命令行进程,然后将上述命令发送过去执行即可。

感谢阅读,希望本文对你有所帮助!

相关阅读