如何對使用 SFTP 連線連接至 EC2 Linux 執行個體進行疑難排解?

2 分的閱讀內容
0

我無法透過安全檔案傳輸協定 (SFTP) 連線連接至 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體。或者,我收到「remote readdir Permission denied」錯誤。

解決方法

透過 SFTP 連線連接至 EC2 執行個體可能失敗的原因有很多種。若要對連線進行疑難排解,請完成以下步驟。

確認您的執行個體符合 SSH 連線先決條件

SFTP 可以在 SSH 之上運作。確認執行個體符合所有 SSH 連線先決條件。如需先決條件的清單,請參閱使用 SSH 從 Linux 或 macOS 連接至 Linux 執行個體

使用詳細訊息登入執行個體以識別錯誤

您可能會收到下列其中一個常見連線錯誤訊息:

  • Connection timed outConnection refused
  • Permission deniedAuthentication failed
  • Server refused our key

如需詳細訊息與如何解決 SSH 錯誤的詳細資訊,請參閱如何對使用 SSH 連線至 Amazon EC2 Linux 執行個體進行疑難排解?

如果 EC2 序列主控台已開啟,可以用來疑難排解支援的 Nitro 型執行個體類型。序列主控台可協助您對開機問題、網路組態和 SSH 組態問題進行疑難排解。序列主控台可連線至執行個體,無需可運作的網路連線。您可以透過 Amazon EC2 主控台或 AWS Command Line Interface (AWS CLI),存取序列主控台。

使用序列主控台之前,先在帳戶層級授予主控台存取權。然後,建立 AWS Identity and Access Management (AWS IAM) 政策,授予 IAM 使用者存取權限。每個使用序列主控台的執行個體都必須包含至少一個密碼型使用者。如需詳細資訊,請參閱設定 EC2 序列主控台的存取權

注意: 如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI

檢閱身份驗證和系統記錄中是否有錯誤

Amazon Linux、Amazon Linux2、RHEL 及 Fedora 驗證日誌

$ sudo less /var/log/secure

Amazon Linux、Amazon Linux2、RHEL 及 Fedora 通用系統日誌

$ sudo less /var/log/messages

Debian 和 Ubuntu 驗證日誌

$ sudo less /var/log/auth.log

Debian 和 Ubuntu 通用系統日誌

$ sudo less /var/log/syslog

Amazon Linux 2023

檢查 sshd 日誌:

journalctl -u sshd

檢查通用系統日誌:

journalctl -a

確認 SSHD 組態檔案已設定 SFTP 的子系統

確認 SSHD 組態檔案已設定 SFTP 的子系統,且 sftp-server 的共用物件檔案是否存在於相應的目錄中。如果 SFTP 連線由於遺失 SFTP 子系統而關閉,則記錄可能會顯示子系統請求在通道 0 上失敗錯誤。

RHEL 和 Fedora 型發行版

$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem sftp    /usr/libexec/openssh/sftp-server
$ sudo ls -l /usr/libexec/openssh/sftp-server
-rwxr-xr-x. 1 root root 100784 Jun 26  2019 /usr/libexec/openssh/sftp-server

Debian 和 Ubuntu 型發行版

$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem    sftp    /usr/lib/openssh/sftp-server
$ sudo ls -l /usr/lib/openssh/sftp-server
-rwxr-xr-x 1 root root 105608 Mar  4  2019 /usr/lib/openssh/sftp-server

如需詳細資訊,請參閱 Linux 手冊頁面上 sshd_config 中的子系統部分。

解決 remote readdir Permission denied 錯誤

remote readdir Permission denied 錯誤表示使用者嘗試 SFTP 連線時,沒有正確權限。使用者至少必須具有讀取和執行權限,才能切換至目標目錄。

確認使用者具有存取目標目錄的權限:

ls -ldZ /directory

檢查限制使用者存取的存取控制清單 (ACL) 權限:

getfacl /directory

確認您已啟用 SELinux:

getenforce

如果已啟用 SELinux,則根據 SELinux 內容檢閱 /var/log/audit/audit.log/var/log/audit.log 中是否有權限遭拒錯誤。

AWS 官方
AWS 官方已更新 6 個月前