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 Packagesfuse-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