Linux之搭建sftp


 

0、查看openssh的版本

ssh -V 
#使用ssh -V 命令來查看openssh的版本,版本必須大於4.8p1,低於的這個版本需要升級。
 

1、創建sftp組

groupadd sftp   
 

2、創建一個sftp用戶,用戶名為mysftp,密碼為mysftp

#修改用戶密碼和修改Linux用戶密碼是一樣的。
useradd -g sftp -s /bin/false mysftp  //用戶名
passwd mysftp 密碼
 

3、sftp組的用戶的home目錄統一指定到/var/sftp下,按用戶名區分,這里先新建一個mysftp目錄,然后指定mysftp的home為/var/sftp/mysftp

mkdir -p /var/sftp/mysftp  
usermod -d /var/sftp/mysftp mysftp  
 

4、配置sshd_config

#文本編輯器打開 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
#找到如下這行,用#符號注釋掉,大致在文件末尾處。
# Subsystem      sftp    /usr/libexec/openssh/sftp-server  

#在文件最后面添加如下幾行內容,然后保存。

Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /var/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
 

5、設定Chroot目錄權限

chown root:sftp /data/sftp/mysftp  
chmod 755 /data/sftp/mysftp 
 

6、建立SFTP用戶登入后可寫入的目錄

#照上面設置后,在重啟sshd服務后,用戶mysftp已經可以登錄。但使用chroot指定根目錄后,根應該是#無法寫入的,所以要新建一個目錄供mysftp上傳文件。這個目錄所有者為mysftp,所有組為sftp,所有#者有寫入權限,而所有組無寫入權限。命令如下:

mkdir /var/sftp/mysftp/upload  
chown mysftp:sftp /var/sftp/mysftp/upload  
chmod 755 /var/sftp/mysftp/upload
 

7、修改/etc/selinux/config

#文本編輯器打開/etc/selinux/config
vim /etc/selinux/config 
#將文件中的SELINUX=enforcing 修改為 SELINUX=disabled ,然后保存。

#在輸入命令
setenforce 0
 

8、重啟sshd服務

#輸入命令重啟服務。
service sshd restart 
 

9、驗證sftp環境

#用mysftp用戶名登錄,yes確定,回車輸入密碼。
sftp sftpuser@127.0.0.1     
#顯示 sftp> 則sftp搭建成功。
<sftp -oPort=22 sftpuser@127.0.0.1>
 

10、使用FileZilla FTP Client連接SFTP服務器

  輸入主機IP地址、用戶名、密碼、端口連接SFTP服務器,端口默認為22。




相關知識點:

  

  /bin/false是最嚴格的禁止login選項,一切服務都不能用,
  /sbin/nologin只是不允許系統login,可以使用其他ftp等服務

如果想要用false在禁止login的同時允許ftp,則必須在/etc/shells里增加一行/bin/false。

 

知道了Linux用戶管理最重要的兩個文件就是/etc/passwd和/etc/shadow這兩個文件。其中/etc/passwd是用來存儲登陸用戶信息的,它的基本格式如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

 


由上面的格式可以看出,每一行代表一個用戶的信息,一共包括7個字段的信息,每個字段的信息用冒號隔開。這7個字段分別代表:

1. 賬號名稱:即登陸時的用戶名
2. 密碼:早期UNIX系統的密碼是放在這個文件中的,但因為這個文件的特性是所有程序都能夠讀取,所以,這樣很容易造成數據被竊取,因此后來就將這個字段的密碼數據改放到/etc/shadow中了
3. UID:用戶ID,每個賬號名稱對應一個UID,通常UID=0表示root管理員
4. GID:組ID,與/etc/group有關,/etc/group與/etc/passwd差不多,是用來規范用戶組信息的
5. 用戶信息說明欄: 用來解釋這個賬號是干什么的
6. 家目錄:home目錄,即用戶登陸以后跳轉到的目錄,以root用戶為例,/root是它的家目錄,所以root用戶登陸以后就跳轉到/root目錄這里
7. Shell:用戶使用的shell,通常使用/bin/bash這個shell,這也就是為什么登陸Linux時默認的shell是bash的原因,就是在這里設置的,如果要想更改登陸后使用的shell,可以在這里修改。另外一個很重要的東西是有一個shell可以用來替代讓賬號無法登陸的命令,那就是/sbin/nologin。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM