【Linux技術專題系列】「必備基礎知識」一起探索和實踐sftp配置之密鑰方式登錄

FTP服務-vsftp協議實現

我們常用的是FTP協議,主要是通過VSFTP是一個基於GPL發佈的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是代碼的安全。

SFTP服務-ssh協議實現

由於vsftp採用明文傳輸,用戶名密碼可通過抓包得到,爲了安全性,需使用sftp,鎖定目錄且不允許sftp用戶登到服務器。由於sftp使用的是ssh協議,需保證用戶只能使用sftp,不能ssh到機器進行操作,且使用密鑰登陸、不是22端口。

  1. 創建sftp服務用戶組,創建sftp服務根目錄,通過groupadd指令進行創建對應的sftp服務用戶組。
groupadd sftp
  1. 常見對應的sftp服務器的目錄地址。
mkdir /data/sftp
  1. 此目錄及上級目錄的所有者必須爲root,權限不高於755,此目錄的組最好設定爲sftp
chown -R root:sftp /data/sftp
chmod -R 0755 /data/sftp
  1. 備份sshd_config配置文件
cp /etc/ssh/sshd_config_bk
  1. 修改sshd配置文件

保證原來22端口可以

sed -i 's@#Port 22@Port 22@' /etc/ssh/sshd_config 
vi /etc/ssh/sshd_config

註釋掉/etc/ssh/sshd_config文件中的此行代碼:

Subsystem  sftp  /usr/libexec/openssh/sftp-server

添加如下代碼:

Port 2222
Subsystem sftp internal-sftp -l INFO -f AUTH
Match Group sftp
ChrootDirectory /data/sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -f AUTH

凡是在用戶組sftp裏的用戶,都可以使用sftp服務;使用sftp服務連接上之後,可訪問目錄爲/data/sftp/username

案例說明

  • test是一個sftp組的用戶,它通過sftp連接服務器上之後,只能看到/data/sftp/test目錄下的內容
  • test2也是一個sftp組的用戶,它通過sftp連接服務器之後,只能看到/data/sftp/test2目錄下的內容
  1. 創建sftp用戶,此例將創建一個名稱爲test的sftp帳號

創建test sftp家目錄:test目錄的所有者必須是root,組最好設定爲sftp,權限不高於755

mkdir /data/sftp/test
chmod 0755 /data/sftp/test
chown root:sftp /data/sftp/test
useradd -g sftp -s /sbin/nologin test #添加用戶,參數-s /sbin/nologin禁止用戶通過命令行登錄
  1. 創建test用戶密鑰對:
mkdir /home/test/.ssh
ssh-keygen -t rsa
cp /root/.ssh/id_rsa.pub /home/test/.ssh/authorized_keys
chown -R test.sftp /home/test

在test目錄下創建一個可以寫的upload目錄

mkdir /data/sftp/test/upload
chown -R test:sftp /data/sftp/test/upload

注:sftp服務的根目錄的所有者必須是root,權限不能超過755(上級目錄也必須遵循此規則),sftp的用戶目錄所有者也必須是root,且最高權限不能超過755。

  1. 測試sftp
service sshd restart
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章