1. 程式人生 > 實用技巧 >sftp檔案伺服器設定

sftp檔案伺服器設定

配置sftp服務

目前越來越多的FTP客戶端軟體開始支援SSH協議上傳和下載檔案,這種協議方式就是SFTP。

SFTP的優勢主要有兩點,一是不需要再配置個FTP服務端;二是SSH協議是安全傳輸,上傳和下載是經過加密的。

下面介紹下在最常用的伺服器系統 CentOS Linux 7 上配置 SFTP 的方式!

一、sftp 安裝

第一步:建立sftp服務使用者組,建立sftp服務根目錄:

1 2 3 4 groupadd sftp #此目錄及上級目錄的所有者(owner)必須為root,許可權不高於755,此目錄的組最好設定為sftp chown -R root /var/sftp
chmod -R 755 /var/sftp

第二步:建立sftp服務使用者:

#新增使用者 使用引數 -s /sbin/nologin禁止使用者通過命令列登入 
useradd -g sftp -d /home/sftp/silent -s /sbin/nologin silent

第三步:為sftp服務使用者新增密碼

passwd silent

第四步:配置sshd_config:

vim /etc/ssh/sshd_config

註釋掉下面這一行:
Subsystem  sftp    /usr/libexec/openssh/sftp-server

在sshd_config最後加入下面這幾

Subsystem sftp internal-sftp
Match Group sftp
    ChrootDirectory /home/sftp/%u
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

注:這裡要注意一下,上面這些程式碼務必放在最後,因為必須要“UseDNS no”後面

第五步:重啟sshd:

systemctl restart sshd

現在可以正常連線了,但是可能還有個問題,就是無法上傳,於是我們需要設定下寫入許可權:

chown root -R /var/sftp/silent
chmod -R 755 /var/sftp/silent

二、sftp 簡單操作

測試

目前越來越多的FTP客戶端軟體開始支援SSH協議上傳和下載檔案,這種協議方式就是SFTP。

SFTP的優勢主要有兩點,一是不需要再配置個FTP服務端;二是SSH協議是安全傳輸,上傳和下載是經過加密的。

下面介紹下在最常用的伺服器系統 CentOS Linux 7 上配置 SFTP 的方式!

一、sftp 安裝

第一步:建立sftp服務使用者組,建立sftp服務根目錄:

1 2 3 4 groupadd sftp #此目錄及上級目錄的所有者(owner)必須為root,許可權不高於755,此目錄的組最好設定為sftp chown -R root /var/sftp chmod -R 755 /var/sftp

第二步:建立sftp服務使用者:

#新增使用者 使用引數 -s /sbin/nologin禁止使用者通過命令列登入 
useradd -g sftp -d /home/sftp/silent -s /sbin/nologin silent

第三步:為sftp服務使用者新增密碼

passwd silent

第四步:配置sshd_config:

vim /etc/ssh/sshd_config

註釋掉下面這一行:
Subsystem  sftp    /usr/libexec/openssh/sftp-server

在sshd_config最後加入下面這幾行:

Subsystem sftp internal-sftp
Match Group sftp
    ChrootDirectory /home/sftp/%u
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

注:這裡要注意一下,上面這些程式碼務必放在最後,因為必須要“UseDNS no”後面

第五步:重啟sshd:

systemctl restart sshd

現在可以正常連線了,但是可能還有個問題,就是無法上傳,於是我們需要設定下寫入許可權:

chown root -R /var/sftp/silent
chmod -R 755 /var/sftp/silent

二、sftp 簡單操作

測試

目前越來越多的FTP客戶端軟體開始支援SSH協議上傳和下載檔案,這種協議方式就是SFTP。

SFTP的優勢主要有兩點,一是不需要再配置個FTP服務端;二是SSH協議是安全傳輸,上傳和下載是經過加密的。

下面介紹下在最常用的伺服器系統 CentOS Linux 7 上配置 SFTP 的方式!

一、sftp 安裝

第一步:建立sftp服務使用者組,建立sftp服務根目錄:

1 2 3 4 groupadd sftp #此目錄及上級目錄的所有者(owner)必須為root,許可權不高於755,此目錄的組最好設定為sftp chown -R root /var/sftp chmod -R 755 /var/sftp

第二步:建立sftp服務使用者:

#新增使用者 使用引數 -s /sbin/nologin禁止使用者通過命令列登入 
useradd -g sftp -d /home/sftp/silent -s /sbin/nologin silent

第三步:為sftp服務使用者新增密碼

passwd silent

第四步:配置sshd_config:

vim /etc/ssh/sshd_config

註釋掉下面這一行:
Subsystem  sftp    /usr/libexec/openssh/sftp-server

在sshd_config最後加入下面這幾行:

Subsystem sftp internal-sftp
Match Group sftp
    ChrootDirectory /home/sftp/%u
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

注:這裡要注意一下,上面這些程式碼務必放在最後,因為必須要“UseDNS no”後面

第五步:重啟sshd:

systemctl restart sshd

現在可以正常連線了,但是可能還有個問題,就是無法上傳,於是我們需要設定下寫入許可權:

chown root -R /var/sftp/silent
chmod -R 755 /var/sftp/silent

登入測試
sftp silent@127.0.0.1
silent@127.0.0.1's password: 

遠端掛載

伺服器上可以使用sshfs將遠端檔案系統對映到本地目錄。使用起來更方便。

1. sshfs軟體安裝

#ubuntu上安裝

apt-get install sshfs

#Fedore上安裝

yum install fuse-sshfs

#CentOS上安裝

方法1:yum安裝

預設源無該工具,需要先安裝EPEL源

yum install -y epel-release

yum -y install fuse-sshfs


yum list fs-sshfs

Installed Packages
fuse-sshfs.x86_64 2.5-1.el7 @epel

方法2:下載rpm安裝

下載rpm檔案for Centos7:

wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/fuse-sshfs-2.5-1.el7.rf.x86_64.rpm

需要先下載安裝fuse(安裝fuse-sshfs依賴於fuse)

yumdownloader fuse-libs

yumdownloader fuse

rpm -Uvh fuse-libs-2.9.2-7.el7.x86_64.rpm

rpm -Uvh fuse-2.9.2-7.el7.x86_64.rpm

安裝fuse-sshfs

# rpm -ivh fuse-sshfs-2.2-1.el7.rf.x86_64.rpm

如果fuse沒有安裝,會報錯:

warning: fuse-sshfs-2.2-1.el7.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
error: Failed dependencies:
fuse >= 2.2 is needed by fuse-sshfs-2.2-1.el7.rf.x86_64
libfuse.so.2()(64bit) is needed by fuse-sshfs-2.2-1.el7.rf.x86_64
libfuse.so.2(FUSE_2.2)(64bit) is needed by fuse-sshfs-2.2-1.el7.rf.x86_64
libfuse.so.2(FUSE_2.5)(64bit) is needed by fuse-sshfs-2.2-1.el7.rf.x86_64
libfuse.so.2(FUSE_2.6)(64bit) is needed by fuse-sshfs-2.2-1.el7.rf.x86_64
libfuse.so.2(FUSE_2.7)(64bit) is needed by fuse-sshfs-2.2-1.el7.rf.x86_64


方法3:編譯安裝
下載:https://github.com/libfuse/sshfs/releases
當前最新版本:sshfs-3.2.0.tar.gz
tar xvf sshfs-3.2.0.tar.gz
./configure --prefix=/usr/local/sshfs
make
make install

2. sshfs使用--掛載目錄

語法:

sshfs user@hostname:path mout_point

舉例:

先建立一個掛載點目錄:

mkdir /mnt/sftpSrvData

掛載遠端目錄到本地掛載點目錄:

本地伺服器

sshfs -o ro [email protected]. 0. 0:/opt/sftpSrvRootDir /mnt/sftpSrvData

遠端伺服器

sshfs -o ro [email protected]:/opt/sftpSrvRootDir /mnt/sftpSrvData

常用引數:

-o ro: 只讀方式掛載。如果不指定引數,預設是讀寫方式掛載。

-o rw: 讀寫方式掛載。如果不指定引數,預設讀寫方式掛載。



設定開機自動掛載

vim /etc/fstab 加入下面一行:

sshfs#user@hostname:path mount_point fuse defaults,auto,allow_other 0 0

需要設定伺服器之間允許SSH無密碼登入,系統重啟之後才能自動掛載檔案系統。

如果伺服器配置為基於SSH金鑰的認證方式,則/etc/fstab中加入如下行:

sshfs#user@hostname:path mount_point fuse IdentityFile=~/.ssh/id_rsa defaults,auto,allow_other 0 0

接下來,你需要更新 fstab 檔案使修改生效。

# mount -a


3.解除安裝掛載目錄
fusermount -u mount_point

如果出現提示:device is busy

可繼續通過下面命令解除安裝:umount -fl ./sftpSrvData

常見問題:

操作許可權問題

出現執行掛載命令以後,shell命令可以直接進入掛載點操作,但遠端程式一直無法操作成功。原因是需要加上 -o 引數:

sshfs [email protected]:/opt/sftpSrvRootDir /mnt/sftpSrvData -o allow_other

如果使用-o引數,需要增加一個配置檔案:/etc/fuse.conf,新增一行記錄,

vim /etc/fuse.conf

user_allow_other