2013-07-31 169 views
0

這就是我需要的使用CGI腳本從遠程服務器移動文件

我有一個本地服務器託管一些CGI shell腳本。我在遠程服務器中有一個文件。我希望我的CGI腳本將文件從遠程服務器複製到本地服務器。

這是我試過

爲了避免輸入密碼每次,我創建使用ssh-keygen命令密鑰文件,並複製我的公鑰文件到遠程服務器/root/.ssh/authorised_keys文件和它的工作。每當我執行scp user @ remotehost:/ root /。預期的文件被複制到我的本地服務器沒有任何手動驗證,這是完美的。

現在,我想爲apache用戶發送CGI腳本的同樣的東西。我用下面的命令來生成Apache用戶密鑰文件

sudo -u _apache ssh-keygen -t rsa 

和系統響應是

Enter file in which to save the key (/Library/WebServer/.ssh/id_rsa) 

通常我的.ssh密鑰存儲在位置/root/.ssh,爲什麼我的系統命令默認爲/ Library/WebServer?我可以有兩個.ssh文件嗎?

除了我想要的還有其他的解決方案嗎?

謝謝

回答

1

每個用戶在系統中應該有他/她自己的〜/ .ssh目錄。

當ssh運行時,它將在用戶的主目錄中查找.ssh目錄。你可以從/ etc/passwd或手指實用程序檢查用戶的主目錄是什麼。當讀取/ etc/passwd時,主目錄是從結尾開始的第二個目錄。例如:

postgres:x:106:115:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash 

在這種情況下,主目錄爲/ var/lib中/ PostgreSQL的

解決你的問題,如果你不打算使用SSH爲別的,你可以複製您的第一個用戶的id_rsa密鑰到第二個用戶的.ssh目錄(更改用戶所有權並保留文件chmod go-rwx)。

或者您可以像生成一樣生成新密鑰,然後將新的.ssh/id_rsa添加到遠程.ssh/authorized_keys中。

請注意,第一種方法將有兩個用戶共享相同的RSA密鑰,並且請注意,您應該在遠程計算機上確實沒有擁有可從CGI腳本中使用的授權密鑰的root用戶。兩者都是安全風險。最好在遠程機器上創建一個非特權用戶並使用它來傳輸文件。

相關問題