VPS架設 4 – 安裝 FTP 軟體

技術文章

有時候我們在程式開發過程當中,有需要檔案上傳、下載…等等,除了有版控來完成這一塊之外,有時候為了測試方便,我們也可以透過 FTP 軟體來達到快速更新程式的功能,所以接下來我們來記錄一下如何安裝 FTP 軟體。

 

安裝 FTP Server

1、更新套件並安裝 vsftpd package

$ sudo apt update

$ sudo apt install vsftpd

 

2、複製原始檔案備份

 

$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bk

 

3、編輯 FTP 基本組態檔 ( basic FTP configuration )

 

編輯 /etc/vsftpd.conf 檔案,並取消下面列的註解

 

write_enable=YES

local_umask=022

chroot_local_user=YES

 

 

 

新增下面文字到最底端,並儲存離開。

 

allow_writeable_chroot=YES

pasv_min_port=40000

pasv_max_port=40100

 

 

4. 重啟設定

 

$ sudo systemctl restart vsftpd

$ sudo systemctl status vsftpd

 

 

狀態為 active ( running ),則代表已經啟用成功。

 

5. 測試 FTP server  ( Use /usr/sbin/nologin shell to limit access. )

 

$ ftp 127.0.0.1

 

 

 

6. 建置 FTPS

 

建立 SSL 認證,在這邊採用 RSA 認證 和 設定一年的有效期限

Create new SSL certificate using below command. Here we are going to create 2048 bit RSA certificate with 365 days validity.

 

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/ftps_vsftpd.pem -out /etc/ssl/private/ftps_vsftpd.pem

 

 

7. 編輯並開始 ssl 設定

 

編輯 vsftpd.conf 文件,開啟 SSL 設定。 (  /etc/vsftpd.conf  )

Now make changes in /etc/vsftpd.conf file to enable and configure SSL. Find and modify below lines as per our certificate location and enable SSL.

 

rsa_cert_file=/etc/ssl/private/ftps_vsftpd.pem

rsa_private_key_file=/etc/ssl/private/ftps_vsftpd.pem

ssl_enable=YES

 

 

8. 重啟並測試

$ sudo systemctl restart vsftpd

 

9. SFTP 設定  ( SFTP configuration )

 

SFTP 使用不同的埠協定,它會比 FTP 更加安全

SFTP uses different protocol, It is more secure than FTP since it uses ssh port for data transfer.

 

$ sudo apt-get install openssh-server

 

建立一個新群組給 SFTP 的使用者 ( Create a new group for SFTP users. )

 

$ sudo addgroup ftpaccess

 

 

編輯 /etc/ssh/sshd_config 檔案,並將以下行進行註解 ( Edit /etc/ssh/sshd_config file and comment the below line. )

#Subsystem sftp /usr/lib/openssh/sftp-server

並加入下面資訊至檔檔最底部 ( and add these lines at the end of the file. )

 

Subsystem sftp internal-sftp

Match group ftpaccess

ChrootDirectory %h

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

 

重新啟動 ssh 服務 ( Now restart ssh service. ) 

( **Please perform this step in the console since you may loose SSH connection while doing the service restart.** )

 

$ sudo systemctl restart ssh

 

將使用者 ( jqnets ) 加入 ftpacess 群組 ( Create an user with nologin shell and with group ftpacess. )

並設定密碼

 

$ sudo useradd -m jqnets -s /usr/sbin/nologin -G ftpaccess

$ sudo passwd jqnets

 

將目錄設定為 root 權限 ( Perform below steps to chroot users to their home directories. )

 

$ sudo chown root:root /home/jqnets

 

建立〝www〞目錄供上傳檔案使用。

Create a directory “upload” inside home directory and modify ownership. This directory can be used to upload files to the server.

 

$ sudo mkdir /home/jqnets/www

$ sudo chown jqnets:ftpaccess /home/jqnets/www

 

接下來,可以進行最後測試 ( Now you can connect server using sftp clients. )

 

$ sftp [email protected]

 

 

10. SFTP 設定  ( SFTP configuration )

由於 var/www/html 只有 root 擁有使用權限,所以將已經設定好的 jqnets/www 指向 var/www/html/ ,方便 FTP 上傳使用。

 

ln :是對資料夾建立超連結的指令

 

$ cd /var/www/html/

$ sudo ln -s /home/jqnets/www

 

 

Gimmy
作者: Gimmy
積極的人在每一次憂患中都看到一個機會 而消極的人則在每個機會都看到某種憂患

發表迴響