SCP權限被拒絕:原因及解決方法

SCP 是一種用於透過 SSH 傳輸檔案的開源工具。您可以在 Linux 和其他受支援的作業系統上使用它,透過 SSH 傳輸檔案。它可用於使用 SSH 連線在兩台主機之間傳輸檔案。

可能發生 “權限被拒絕”錯誤 在SCP中,出於多種原因,例如 定義錯誤的路線 أ或者 書面許可錯誤我們將探討導致此錯誤的一些原因以及如何解決它。

原因:缺少寫入權限

出現此錯誤的原因之一是 您的使用者沒有寫入權限。 對於您嘗試寫入檔案的主機上的特定目錄,您可以執行下列操作以檢查這些權限: 使用“ls -l”命令這將顯示寫入權限。

尋找字母“w” 位於輸出結果第一列的前四個字元內。如果看到它,則表示: 您的使用者擁有寫入權限 因此,該目錄就是您的目標目錄。或者,您也可以在該目錄中使用 touch 指令建立檔案。如果您沒有收到任何錯誤訊息(例如「權限被拒絕」),則表示您的使用者擁有寫入權限。

例子:

假設你想使用 SCP 將檔案複製到遠端主機,但由於寫入權限問題,你收到「權限被拒絕」錯誤。

scp abcd.txt user@127.0.0.1:/home/abcduser/abcd.txt

解決方案 1:使用 root 帳號傳輸文件

要解決此類錯誤, 您需要授予寫入權限 要讓你的使用者擁有該目錄的存取權限,你需要root權限或sudo權限。另一種方法是將檔案複製到你的使用者擁有寫入權限的目錄中。

在這種情況下,要么需要允許當前使用者對 /home/abcduser 擁有寫入權限,要么可以使用 root 使用者帳戶複製此檔案。

要允許 root 使用者使用 scp 複製文件,您需要允許 root 使用者透過 ssh 登錄,出於安全原因不建議這樣做,但您仍然可以在這種情況下使用它,並在之後停用它。

為此,請打開 OpenSH 設定檔位於 /etc/ssh/sshd_config و刪除關於 PermitRootLogin 的註釋 在遠端主機上的文字編輯器中。

接下來,使用遠端主機的 root 帳戶連接到遠端主機。

然後按如下方式運行命令:

scp abcd.txt root@127.0.0.1:/abcduser/abcd.txt

或者簡單地說,這樣做就能解決問題。

scp abcd.txt 127.0.0.1:/abcduser/abcd.txt

因為它們完全相同。

方案二:將您的使用者加入到寫入權限群組:

要讓使用者能夠在 Linux 中寫入目錄/文件,你需要將使用者加入到擁有該目錄或文件的群組,或將該文件的所有權授予該使用者。

在我們的範例中,我們在遠端系統的 /home/ 目錄上執行 ls -l 命令,以找出哪個群組擁有 /home/abcd。

`ls -l` 指令會給予輸出,其中第四列的內容是擁有對應目錄/檔案的群組。

在我們的範例中,`abcduser` 群組擁有目錄 `/home/abcduser`,因此我們可以

只需在遠端系統上運行此命令即可。

sudo groupadd user abcd

是這個團體 'abcd' 我們希望用戶加入的群組,以及我們要更改的用戶的群組,都是「user」。

再次執行 `ls -l` 命令,如果 我在第六個位置看到了字母“w”。 從第一列的出口來看,這表示該群組對該目錄具有寫入權限。

然後再次運行該命令,在本例中為:

scp abcd.txt user@somepc:/home/abcduser/abcd.txt

解決方案 3:使用該目錄的擁有者使用者複製檔案。

最簡單的解決方法是讓擁有該目錄的使用者將檔案複製到該目錄中。

只需對目錄執行 `ls -l` 命令即可。在本例中,結果將是:

ls -l /home/

第三列的輸出結果將顯示擁有與您感興趣的目錄名稱對應的目錄的使用者。在本例中,如上圖所示,`abcduser` 擁有目錄 `/home/abcduser`。

然後使用此特定帳戶,透過 `scp` 將檔案複製到遠端主機。
在本例中,我們按如下方式運行命令:

scp abcd.txt abcduser@127.0.0.1:/home/abcduser/abcd.txt

原因 2:遠端主機沒有該使用者的私鑰。

嘗試在主機之間傳輸檔案時,可能會收到「scp 權限被拒絕(公鑰)」的錯誤提示。

這是 `ssh` 的身份驗證問題,原因是您在 `scp` 運行時沒有新增私鑰。

例子:

scp somefile user@127.0.0.1:/home/user/somefile.txt

解決方案:

解決這個問題的簡單方法是 執行帶有 `-i` 標誌的 `scp` 命令因此,請新增要連接到遠端主機並向其傳輸檔案的使用者的私鑰。

您需要確保擁有該使用者的私鑰,如果沒有,則需要在遠端電腦上建立私鑰,然後讓 `scp` 工具使用 `-i` 標籤來使用它。

就我們的情況而言,解決方案是:

scp -i key.pem somefile user@127.0.0.1:/home/user/somefile.txt

其中 `key.pem` 是使用者「user」的私鑰檔案。

備註: 我們用過 `127.0.0.1` 例如,作為遠端主機,在您的情況下,遠端主機很可能是遠端設備,而不是您的本機設備。

 

評論被關閉。