如何在我的 Lightsail 執行個體上建立 SFTP 使用者?

2 分的閱讀內容
0

我想在我的 Amazon Lightsail 執行個體上建立 SFTP 使用者。

解決方法

**注意事項:**下列步驟會建立 SFTP 使用者,可存取無 SSH 存取權的 chroot 環境 (chroot 監獄)。SFTP 使用者無法存取 chroot 環境或目錄外的目錄。對這類使用者來說,chroot 目錄就是根目錄。

設定 SFTP 群組和使用者

  1. 使用下列命令為 SFTP 使用者建立群組:

    sudo groupadd sftp_group

    **注意事項:**以您的群組名稱取代 sftp_group

  2. 在主目錄無法存取 SSH 登入 Shell 的執行個體上,建立使用者。若要這麼做,請執行下列命令:

    sudo useradd -g sftp_group -m -d  /home/sftp_user -s /sbin/nologin sftp_user

    **注意事項:**以您的使用者名稱取代 sftp_user

使用密碼驗證或 SSH 金鑰型驗證設定使用者驗證

密碼驗證

使用下列命令建立密碼:

sudo passwd sftp_user

SSH 金鑰型驗證

  1. 若要要求 SSH 金鑰型驗證,請在使用者的主目錄中建立 .ssh 資料夾。接著建立 authorized_keys 檔案:

    sudo mkdir /home/sftp_user/.ssh
    sudo touch /home/sftp_user/.ssh/authorized_keys
  2. /home/sftp_user/.ssh/authorized_keys 檔案中新增要使用的 SSH 公開金鑰。如需詳細資訊,請參閱 Set up SSH keys for Lightsail

  3. 若要變更使用者主目錄的所有權和許可,請執行下列命令:

    sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -Rsudo chown root:sftp_group /home/sftp_user/
    sudo chmod 755 /home/sftp_user/
    sudo chmod 700 /home/sftp_user/.ssh/
    sudo chmod 600 /home/sftp_user/.ssh/authorized_keys

    **注意事項:**上方範例在 /home/sftp_user 目錄上使用許可 755,然後將所有權變更為根使用者。此使用者目錄會用來當作 chroot 目錄。

編輯 /etc/ssh/sshd_config 檔案

  1. Subsystem sftp 行中,將 Subsystem sftp /usr/libexec/openssh/sftp-server 行變成註解:

    # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. 以下列文字取代上一行:

    Subsystem sftp internal-sftp
  3. 若要限制 SFTP 使用者存取權,請在檔案結尾新增下列文字:

    Match Group sftp_group
    ChrootDirectory /home/%u
    ForceCommand internal-sftp

    在上方範例中,ChrootDirectory 指定 SFTP 使用者的根目錄。**MatchGroup ** 識別 sftp_group 中將路徑 /home/%u 當作其根目錄的使用者。字元 %u 代表使用者。ForceCommand internal-sftp 強制使用執行中的 SFTP 伺服器。

  4. 如果您使用密碼驗證,請將 /etc/ssh/sshd_config 檔案中的 PasswordAuthentication 設為 yes

為使用者建立 chroot 目錄

  1. 若要建立 chroot 目錄,請執行下列命令:
    sudo mkdir /home/sftp_user/uploads
    **注意事項:**以您的目錄名稱取代目錄名稱 sftp_useruploads
  2. 修改檔案的所有權:
    sudo chown sftp_user:sftp_group /home/sftp_user/uploads
    **注意事項:**以您的目錄名稱取代目錄名稱 sftp_useruploads

確認您的變更並重新啟動 SSHD 服務

  1. 確認目錄許可是否類似以下範例:

    ls -ld /homedrwxr-xr-x 3 root root 23 Oct  6 15:17 /home
    
    ls -ld /home/sftp_user
    drwxr-xr-x 3 root sftp_group 21 Oct  6 15:17 /home/sftp_user
    
    ls -ld /home/sftp_user/uploads/
    drwxr-xr-x 2 sftp_user sftp_group 6 Oct  6 15:17 /home/sftp_user/uploads/
  2. 重新啟動 SSHD 服務:

    sudo systemctl restart sshd

使用 SFTP 連線至執行個體

密碼驗證

執行下列命令:

# sftp sftp_user@example.com's password:

SSH 金鑰型驗證

執行下列命令:

# sftp -i key.pem sftp_user@example.com
AWS 官方
AWS 官方已更新 1 年前