1. 程式人生 > >Linux sftp 伺服器配置

Linux sftp 伺服器配置

Linux 7  sftp 伺服器配置

sftp配置

1、建立使用者組

# groupadd sftpgroup

2、建立使用者

# useradd -g sftpgroup -s /sbin/nologin -d /ftpdata/sftp/user user

3、設定密碼

# passwd user

4、建立使用者ftp檔案目錄

# mkdir -p /ftpdata/sftp/user

5、修改ssh 的配置檔案

# vim /etc/ssh/sshd_config
註釋掉Subsystem sftp /usr/libexec/openssh/sftp-server 這句話 
並且在檔案末尾新增如下語句
Subsystem sftp internal-sftp    
Match Group sftpgroup    
ChrootDirectory /ftpdata/sftp/%u    
ForceCommand   internal-sftp    
AllowTcpForwarding no    
X11Forwarding no

6、重啟ssh 服務

# systemctl restart sshd

這時候sftp 還不能連線(不能上傳檔案和寫入的許可權),需在根目錄/ftpdata/sftp/user配置許可權,需在user目錄下建立個檔案作為根目錄。

7、建立ftp根目錄

# mkdir /ftpdata/sftp/user/file
# chown -R user.sftpgroup /ftpdata/sftp/user/file
# chmod -R 755 /ftpdata/sftp/user/file

完成。

附帶我寫的建立使用者的指令碼如下:

#!/bin/sh

#############################
## Writer By Tian           #
## Ver 1.0 at 20190108      #
## sh sftp.sh name password #
#############################
data=/ftpdata/sftp
name=$1
pass=$2
echo "you are setting username : ${name}"
echo "you are setting password : $pass for ${name}"

mkdir -p $data/$name
useradd -g sftpgroup -d /ftpdata/sftp/$name/file -s /sbin/nologin $name

if [ $? -eq 0 ];then
   echo "user ${name} is created successfully!!!"
else
   echo "user ${name} is created failly!!!"
   exit 1
fi

echo $pass | passwd $name --stdin  &>/dev/null
if [ $? -eq 0 ];then
   echo "${name}'s password is set successfully"
else
   echo "${name}'s password is set failly!!!"
fi