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 image 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



你可能感兴趣的:(SuSE,sftp)