歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下sftp配置之密鑰方式登錄

Linux下sftp配置之密鑰方式登錄

日期:2017/2/27 15:43:31   编辑:Linux教程

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

1. 創建sftp服務用戶組,創建sftp服務根目錄

groupadd sftp
#此目錄及上級目錄的所有者必須為root,權限不高於755,此目錄的組最好設定為sftp
mkdir /data/sftp
chown -R root:sftp /data/sftp
chmod -R 0755 /data/sftp

2. 修改sshd配置文件

cp /etc/ssh/sshd_config,_bk}  #備份配置文件
sed -i 's@#Port 22@Port 22@' /etc/ssh/sshd_config  #保證原來22端口可以
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目錄下的內容

3. 創建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禁止用戶通過命令行登錄
創建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。

4. 測試sftp

service sshd restart
test用戶密鑰登陸如下圖: 原文:https://blog.linuxeye.com/437.html
Copyright © Linux教程網 All Rights Reserved