SUSE Linux SFTP服務器配置

公司某應用系統與合作伙伴對接時,對方需要使用應用程序通過SFTP免輸入密碼到我公司服務器上傳下載文件。之前其他合作伙伴都是通地FTP交換文件的。

在網上查了些資料大部分基於CenterOS RedHat配置的SFTP,在昨天在SUSE 11.1上配置了下SFTP,特記錄備忘。

1.實現目標:

(1)SUSE 11.1環境下 SFTP通過RSA密鑰配對免密碼訪問

(2)限制SFTP用戶只在自己根目錄下訪問


2.SFTP 服務配置

sftp服務複用ssh服務,sftp的配置即修改/etc/ssh/sshd_config配置

【a】註釋下面這幾條

#Subsystem      sftp    /usr/lib64/ssh/sftp-server

下面這幾條一定要註釋要不然sshd啓不來,暫時不知道以下幾條是做什麼用的,註釋後沒任何異常

#This enables accepting locale enviroment variables LC_* LANG, see sshd_config(5).

#AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 

#AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 

#AcceptEnv LC_IDENTIFICATION LC_ALL


【b】添加下面這幾條

Subsystem sftp internal-sftp

Match group sftp     #指定以下的行僅匹配sftp用戶組的用戶

ChrootDirectory %h   #指定用戶驗證後用於chroot環境的路徑 %h是指用戶根目錄

ForceCommand internal-sftp  #執行內部sftp,並忽略任何~/.ssh/rc文件中的命令

X11Forwarding no    

AllowTcpForwarding no


【c】增加支持RSA密鑰認證

AuthorizedKeysFile .ssh/authorized_keys   #此參數用於說明公鑰文件位置,指用戶根目錄.ssh文夾authorized_keys文件作爲SRA公鑰

PasswordAuthentication no   #設置成no強制使用密鑰訪問,而不能用戶名及密碼;如果設置成yes表示兩種方式都可以訪問,一般建議用yes


至此,SFTP服務器端配置完成,然後重啓sshd服務


3.SFTP服務器上增加sftp用戶

【a】rman:/usr/sftp-dir # useradd  -G sftp  -d /usr/sftp-dir/test1  -s /sbin/nologin   test1

     //-s /sbin/nologin 禁止test1用戶登陸操作系統

【b】rman:/usr/sftp-dir # mkdir /usr/sftp-dir/test1     //用root用戶爲test1賬戶建目錄

檢查test1目錄權限,必須是root用戶755權限

rman:/usr/sftp-dir # ll

drwxr-xr-x 2 root root 4096 Oct 18 09:25 test1

rman:/usr/sftp-dir # 

【c】在用戶目錄下建上傳下載目錄

rman:/usr/sftp-dir/test1 # mkdir upload

rman:/usr/sftp-dir/test1 # mkdir download

rman:/usr/sftp-dir/test1 # chown test1. upload/       //upload目錄屬主test1 

rman:/usr/sftp-dir/test1 # ll

total 8

drwxr-xr-x 2 root  root  4096 Oct 18 09:40 download    //經過測試下載文件夾一定要755權限

drwxr-xr-x 2 test1 sftp 4096 Oct 18 09:40 upload


4.客戶端服務器製作SRA密鑰並上傳至目標服務器

【a】製作RSA證書

test-lvm:~/.ssh # ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase):              //免密碼認碼此處直接回車

Enter same passphrase again:                            //免密碼認碼此處直接回車

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

f2:25:e6:5a:3d:2c:4f:d2:19:bf:3c:46:52:15:4f:db root@test-lvm

The key's randomart p_w_picpath is:

+--[ RSA 2048]----+

|              ...|

|              .oo|

|             . .E|

|            .    |

|      . S o.     |

|       = *.+.    |

|        * Bo.    |

|       o = oo.   |

|      .   ..o.   |

+-----------------+

【b】將RSA公鑰(x.pub)上傳到目標服務器sftp用戶.ssh目錄下
test-lvm:~/.ssh # ls

id_rsa  id_rsa.pub

test-lvm:~/.ssh # scp id_rsa.pub  [email protected]:/usr/sftp-dir/test1/.ssh


【c】目標服務器.ssh目錄下修改RSA公鑰文件名

 因當時在目標服務器sshd_config 指定證書名爲authorized_keys

 AuthorizedKeysFile.ssh/authorized_keys

 所以,需要將修改公鑰名

rman:/usr/sftp-dir/test1/.ssh # ls

id_rsa.pub

rman:/usr/sftp-dir/test1/.ssh # mv id_rsa.pub  authorized_keys

rman:/usr/sftp-dir/test1/.ssh # ll

total 4

-rw-r--r-- 1 root root 395 Oct 18 10:23 authorized_keys

rman:/usr/sftp-dir/test1/.ssh # 

至此,SFTP RSA公鑰配對完成


5.客戶端服務器測試

使用 sftp sftp-user@sftp-ip 登陸不需要輸入密碼即表示成功

test-lvm:~/.ssh # sftp [email protected]

Connecting to 172.22.2.228...

sftp> ls

download  upload    

sftp>

切換目錄失敗,只能在用戶根目錄下

sftp> cd /home

Couldn't canonicalise: No such file or directory

sftp> 


6.需要注意的幾點

SUSE Linux 與其他的不同之處

【a】配置sshd_config時, 一定要註釋下面幾條,否則sshd有務啓不來

#This enables accepting locale enviroment variables LC_* LANG, see sshd_config(5).

#AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 

#AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 

#AcceptEnv LC_IDENTIFICATION LC_ALL


【b】配置下載文件夾的時候權限一定要如下示,否則使用root用戶放在download文件夾的文件,sftp用戶看不到,在suse 11.1 64bit 上反覆測試過,也許是一個bug

rman:/usr/sftp-dir/test1 # ll

total 8

drwxr-xr-x 2 root  root  4096 Oct 18 09:40 download  

drwxr-xr-x 2 test1 sftp 4096 Oct 18 09:40 upload



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