Linux SFTP服务器部署

Linux SFTP服务器部署

 

1、安装系统Red Hat Enterprise Linux7,系统会自带openssh功能。

测试SFTP登录: sftp -P port -v user@ip

其中: -P(大写)是指定端口; -v(小写)显示LOGusersftp用户; ipSFTP服务器IP地址。

 

2、创建SSH管理用户

1) 添加用户

useradd -m admin

2) 设置密码

passwd admin

3) 创建用户组并设置用户到组

groupadd admingrp

usermod -G admingrp admin

 

3、为了安全,禁用root用户的 ssh 登录,并修改 ssh port:

 

注:执行以下操作前:测试admin putty登录成功,并能成功切换到root权限。

注: admin用户下,root权限执行命令方法:

    Sudo 命令行,即可获得root权限来执行命令行。

    或者 su root 切换到root权限下来执行。

 

先备份sshd_config

cp /etc/ssh/sshd_config   /etc/ssh/sshd_config _bak

 

修改vim /etc/ssh/sshd_config:

PermitRootLogin no

Port 8080

 

重启sshd

service sshd restart

 

4、创建sftp用户

 

1) 创建sftp用户

useradd -m sftp01

useradd -m sftp02

Passwd sftp01

Passwd sftp02

 

2) 创建sftp群组

groupadd sftpgrp

usermod -G sftpgrp sftp01

usermod -G sftpgrp sftp02

 

5、设置sftp用户无bash权限(客户无命令行权限,则无法ssh登录)

修改 vim /etc/passwd:

将对应用户的 /bin/bash 修改为 /bin/nologin,如下:

 

6、创建sftp权限目录,限定所有SFTP用户的访问路径。

1) sudo mkdir -p /data/sftp

 

一般出现问题会在ChrootDirectory directory上,这个目录的用户和用户组必须是root:root,在这个目录下建对应sftp账号的目录并给这个用户相应权限,操作如下:

 

chown root:root /data/sftp/
chmod 755 /data/sftp/

 

2) 为特定的SFTP用户(sftp01)创建报表目录,并设置权限

 

sudo mkdir /data/sftp/rptdir

 

修改报表目录的拥有权限,允许sftp01用户以及sftpgrp群组对目录rptdir有权限

chown sftp01:sftpgrp /data/sftp/rptdir 

 

修改用户对目录的操作权限(注:执行权限x必须要给到,不然SFTP客户端登录会看不到文件)

chmod 0570 /data/sftp/rptdir 注:4是只读和执行,6是读写和执行

 

此操作完成后,客户通过ssh工具访问时,只能在rptdir里进行操作,并且非sftp01:sftpgrp用户无权限进行操作。

 

7、sshd_config个性化配置

 

sudo vim /etc/ssh/sshd_config

 

注:注意踩坑点:配置 ChrootDirectory /data/sftp 必须在这个 Match group sftp 配置后面,不然重启sshd后登录所有账号都报错:/bin/bash: No such file or directory

 

PubkeyAuthentication yes  #使用密钥验证

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

# Example of overriding settings on a per-user basis
#Match User was #指定单用户的话使用这个配置,是使用的是用户组

Match group sftp

X11Forwarding no #禁止X11转发
AllowTcpForwarding no #禁止tcp转发
ForceCommand internal-sftp #指定sftp命令,不能ssh连接

ChrootDirectory /data/sftp #指定用户被锁定到的那个目录,为了能够chroot成功,该目录必须属主是root,并且其他用户或组不能写

 

注:需要严格按照 Match、X11Forwarding、AllowTcpForwarding 、ForceCommand 、ChrootDirectory 顺序设置以上参数,并放在sshd_config文档最后。如下图:

不按下图顺序,可能会出现putty无法登录,或者登录闪退的问题。

 

 

保存后,重启sshd

service sshd restart

如有失败,查看LOG

systemctl status sshd.service

journalctl -xe

 

8、生成并添加pubkey到服务器

1) 使用PuTTYgen 工具生成密钥。

系统会要求您将鼠标移到 Key 部分的空白区域以生成一些随机性。移动指针时,绿色进度条将前进。这个过程应该需要几秒钟。

 

 

(可选)如果要使用密码,请在“Key passphrase”字段中键入密码,并在“Confirm passphrase”字段中确认相同的密码。如果您选择使用密码短语,则可以通过保护私钥免遭未经授权的使用来获得额外的安全保护。

 

如果设置密码,则每次使用私钥时都需要输入密码。

 

单击保存私钥按钮保存私钥。您可以使用 .ppk 扩展名( PuTTY 私钥)将文件保存在任何目录中,但建议您将其保存在可以轻松找到它的位置。为私钥文件使用描述性名称是很常见的。

 

或者,您也可以保存公钥,但稍后可以通过加载私钥重新生成公钥。

2) Pubkey生成后复制到文件:

右键单击标记为Public key for pasting into OpenSSH authorized_keys file”的文本字段,然后单击“全选”选择所有字符。打开文本编辑器,粘贴字符并保存。确保你粘贴整个密钥。建议将文件保存在保存私钥的同一目录中,使用相同名称的私钥和 .txt .pub 作为文件扩展名。

这是您将其添加到 Linux 服务器authorized_keys 文件的关键。

3) 将公钥复制到SFTP服务器

 

注:以下说明中的sftp用户为实际在系统中创建的用户名。

 

现在您已生成 SSH 密钥对,下一步是将公钥复制到要管理的服务器。

注:publickey必须COPY到sftp登录用户目录下的authorized_keys文件中,如:

/home/sftp用户/.ssh/authorized_keys

 

如果SFTP用户 SSH 目录不存在,请使用 mkdir 命令创建它并设置正确的权限:

mkdir -p /home/sftp用户/.ssh/

 

设置sftp登录用户拥用此目录权限

chown sftp用户:sftp用户 /home/sftp用户/.ssh/

 

设置此目录的权限范围权限登录用户本身,用户组和其它组都不可操作

chmod 0700 /home/sftp用户/.ssh/

 

用文本编辑器打开 ~/.ssh/authorized_keys 文件, 并粘贴在步骤 4 中复制的公钥到 ~/.ssh/authorized_keys 中:

 

如果首次添加公钥,可以直接COPY公钥文件,如下:

cp 公钥文件  /home/sftp用户/.ssh/authorized_keys

 

Vim  ~/.ssh/authorized_keys

整个公钥文本应该在一行上。

 

运行以下 chown 命令以确保只有您的用户可以读写该 ~/.ssh/authorized_keys 文件:

chown sftp用户:sftp用户/home/sftp用户/.ssh/authorized_keys

chmod 0600 /home/sftp用户/.ssh/authorized_keys

 

9、使用putty密钥方式登录

 

第1步

 

第2步

 

 

第3步

 

 

 全部设置完成后,回到第1步,点击Save即可,下次就可以直接load会话登录。

 

 

 

 

 

 

 

 

 

posted on 2025-02-20 16:20  lzlvv  阅读(103)  评论(0)    收藏  举报

导航