惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
L
LangChain Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
D
Docker
WordPress大学
WordPress大学
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The GitHub Blog
The GitHub Blog
博客园 - 叶小钗
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog
博客园 - Franky

博客园 - lzlvv

debug1: Authentications that can continue: publickey sgrptprod@114.141.166.109: Permission denied (publickey). Connection closed. linux sftp 设置了用户对目录有 0700权限,但在上传时报 Permission denied错误 linux 服务器设置 时 /etc/passwd设置为nologin时,登录SFTP会报 No supported authentication methods available win10系统已经映射的网络驱动器在其他应用软件无法读到解决方案 linux添加用户并赋予root权限 C# Socket通信 Socket传输结构数据 Windows Server 2016如何关闭和打开防火墙 | 详细教程 在‌Windows Server 2016中显示‌桌面图标的方法 C#常用正则表达式 完全图解RAID存储技术:RAID 0、1、5、6、10、50、60 MySQL 5.7 安装教程(Win 10) 在 Windows 使用 PuTTYgen 上生成 SSH 密钥 NPOI使用手册 MSSQL中添加链接数据库 Windows 批处理(bat)语法大全 Oracle ODP.NET ConnectionString接池及连接参数 SQL update select结合语句详解及应用 从FoxPro数据库中提取结构/索引到Excel
Linux SFTP服务器部署
lzlvv · 2025-02-20 · via 博客园 - lzlvv

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会话登录。