簡體   English   中英

如何使用SSH文件傳輸協議將文件從本地機器復制到服務器?

[英]How to copy files from local machine to server using SSH file transfer protocol?

我有一台Ubuntu 9.10台式機,我在本地使用。 我正在托管服務提供商上設置服務器。 服務器將運行一個非常小的Ubuntu服務器LTS版本(只有LAMP和電子郵件服務器沒有GUI)。

我想編寫一個腳本(安排為cron作業),允許我將本地文件上傳到服務器上。 出於安全原因,我想使用[SFTP] [1]。

我是shell腳本的新手 - 但我想shell腳本就是這樣做的方式(除非我弄錯了)。

任何人都可以向我提供有關如何編寫此類腳本的初始指示,以便安全地將本地文件上載到服務器?

理想情況下,我想在傳輸之前壓縮文件(以節省帶寬)

[1]: http:// SSH文件傳輸協議

無論你拼寫為“安全”還是“安全”,我們都無法讀懂你的想法並告訴你想要保護什么。 所以我會給出一個基本配方並告訴你它有什么用處。 這可能應該全部轉移到超級用戶身上。

  1. 學習基本的bourne shell。 它的教程不適合stackoverflow答案。
  2. 運行ssh-keygen來創建一個ssh密鑰對。 由於你想從cron運行scp,你不能使用密碼,AFAIK。 這意味着您必須確保您復制的計算機不受入侵者的影響。
  3. 將公鑰從ssh密鑰對復制到目標計算機上的.ssh / authorized_keys。
  4. 通過運行'ssh target-machine'並成功登錄sans-password來證明這是有效的。

現在,您可以創建一個使用scp命令執行實際副本的shell腳本。 從...開始:

#!/bin/sh
scp PATHNAME_OVER_HERE target-host:/PATHNAME_OVER_THERE

這對於基本密碼間諜和使用telnet連接到目標主機的rand是安全的。 如果源系統不安全則不安全,我不能保證ssh協議的安全性,盡管它當然被廣泛使用。

如何使用SSH文件傳輸協議將文件從本地機器復制到服務器?

使用scp

我想在一個cron工作中做到這一點。

在cron作業中使用scp的主要問題是: 你在哪里獲得你的憑據? 明確地輸入密碼並不是一個好主意。 更好的想法是在您的計算機上運行ssh-agent進程。 查找適當的ssh-agent您可以運行此腳本:

#!/bin/sh

for i in $SSH_AUTH_SOCK /tmp/ssh*/agent*
do
  if [ -r "$i" -a -w "$i" ]; then
    case `SSH_AUTH_SOCK="$i" ssh-add -l` in
      *:*:*) echo "$i"; exit 0 ;;
    esac
  fi
done

exit 1

如果腳本成功,則在運行scp之前,您將獲得可以放入SSH_AUTH_SOCK環境變量的值。

當您啟動客戶端時,您應該通過啟動ssh-agent並運行ssh-add來顯示您的憑據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM