2014-12-02 71 views
0

我必須處理一個相當煩人的情況。我必須使用scp從一臺服務器通過shell腳本將文件傳輸到另一臺服務器。問題是我沒有任何一個root權限。我不允許安裝任何軟件包,例如sshpass,ssh2,expect等。我甚至沒有在第二臺服務器上必須使用的用戶主目錄下的寫權限。存儲〜/ .ssh以外的私鑰

由於我不能使用sshpass等來啓用我的腳本輸入登錄憑據,我想過使用ssh密鑰對進行身份驗證。其實這是我的第一個想法,但由於第二臺服務器上的用戶在其主目錄中沒有寫權限,但只在後續目錄中,所以ssh-keygen失敗,因爲它無法將密鑰放入〜/ .ssh中。

這兩個都是Debian服務器btw。

有沒有什麼辦法可以生成ssh密鑰對並在〜/ .ssh之外使用它?

任何幫助,非常感謝。

+0

你可以在目標系統上運行該腳本,並且該文件是_pull_? – Andras 2014-12-02 04:49:00

回答

0

在客戶端是的。但是,在服務器端,除非以不同的方式配置,否則sshd會期望您在該目錄中的憑據。

如果您可以從不能訪問.ssh的服務器到您可以訪問的服務器,可以使用-i選項指定密鑰文件的位置。

您是否有其他運輸機制?你可以把filn放到你的public_html上,並把它放在另一邊?

0

您可以在任何地方使用密鑰對。關鍵是權限在密鑰對上正確設置。所有權需要設置爲用戶chown user:user keyfile,權限必須爲chmod 400 keyfile

將密鑰移動並設置權限後,剩下的就是告訴scp使用哪個密鑰。您可以通過使用-i標誌來完成此操作。

IE:scp /source/file [email protected]:/target/location/ -i keyfile

編輯: 作爲Amadan提到他的答案 - 這是假設你正在連接服務器已經有了密鑰對用戶授權密鑰。如果不是,則需要更改/ etc/ssh/sshd_config,只有具有正確訪問權限的用戶才能執行此操作。如果你的用戶現在可以訪問它,那麼在服務器上嘗試cat/etc/ssh/sshd_config可能是值得的。如果您有閱讀權限,則您將能夠辨別預期的authorized_keys位置。服務器管理員可能已經將預期的關鍵位置定製爲您有權訪問的內容。