linux下sftp配置之密鑰方式登錄
由于vsftp采用明文傳輸,用戶名密碼可通過抓包得到,為了安全性,需使用sftp,鎖定目錄且不允許sftp用戶登到服務(wù)器。由于sftp使用的是ssh協(xié)議,需保證用戶只能使用sftp,不能ssh到機(jī)器進(jìn)行操作,且使用密鑰登陸、不是22端口。
1. 創(chuàng)建sftp服務(wù)用戶組,創(chuàng)建sftp服務(wù)根目錄
1
|
groupadd sftp |
#此目錄及上級目錄的所有者必須為root,權(quán)限不高于755,此目錄的組最好設(shè)定為sftp
1
2
3
|
mkdir /data/sftp chown -r root: sftp /data/sftp chmod -r 0755 /data/sftp |
2. 修改sshd配置文件
1
2
|
cp /etc/ssh/sshd_config ,_bk} #備份配置文件 sed -i 's@#port 22@port 22@' /etc/ssh/sshd_config #保證原來22端口可以 |
1
|
vi /etc/ssh/sshd_config |
注釋掉/etc/ssh/sshd_config文件中的此行代碼:
1
|
subsystem sftp /usr/libexec/openssh/sftp-server |
添加如下代碼:
1
2
3
4
5
6
7
|
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服務(wù);使用sftp服務(wù)連接上之后,可訪問目錄為/data/sftp/username
舉個例子:
test是一個sftp組的用戶,它通過sftp連接服務(wù)器上之后,只能看到/data/sftp/test目錄下的內(nèi)容
test2也是一個sftp組的用戶,它通過sftp連接服務(wù)器之后,只能看到/data/sftp/test2目錄下的內(nèi)容
3. 創(chuàng)建sftp用戶
#此例將創(chuàng)建一個名稱為test的sftp帳號
#創(chuàng)建test sftp家目錄:test目錄的所有者必須是root,組最好設(shè)定為sftp,權(quán)限不高于755
1
2
3
4
|
mkdir /data/sftp/test chmod 0755 /data/sftp/test chown root: sftp /data/sftp/test useradd -g sftp -s /sbin/nologin test #添加用戶,參數(shù)-s /sbin/nologin禁止用戶通過命令行登錄 |
創(chuàng)建test用戶密鑰對:
1
2
3
4
|
# 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目錄下創(chuàng)建一個可以寫的upload目錄
1
2
|
mkdir /data/sftp/test/upload chown -r test : sftp /data/sftp/test/upload |
注:sftp服務(wù)的根目錄的所有者必須是root,權(quán)限不能超過755(上級目錄也必須遵循此規(guī)則),sftp的用戶目錄所有者也必須是root,且最高權(quán)限不能超過755。
4. 測試sftp
1
|
service sshd restart |
test用戶密鑰登陸如下圖:
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!