無需密碼從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 [email protected]:/root/downloads [email protected]’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文件夾中。
運行pscp
選擇RSA,然后點擊Generate。接著移動鼠標,通過鼠標位置生成隨機數來生成Key。
生成密鑰
在對話框中點擊“save private key”,將私鑰保存為key.ppk,并存儲在D:根目錄下。
保存私鑰
復制對話框上方文本框中的公鑰,然后執行以下命令,將公鑰添加到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 [email protected]:/root/downloads hello.txt | 0 kB | 0.0 kB/s | ETA: 00:00:00 | 100%
這樣,通過命令行將文件發送到Linux系統就完成了,接下來當需要通過編程方式發送文件時,可以啟動一個cmd命令行進程,然后將上述命令發送過去執行即可。
感謝閱讀,希望本文對你有所幫助!