Linux SFTP服务器部署
Linux SFTP服务器部署
1、安装系统Red Hat Enterprise Linux7,系统会自带openssh功能。
测试SFTP登录: sftp -P port -v user@ip
其中: -P(大写)是指定端口; -v(小写)显示LOG; user是sftp用户; ip是SFTP服务器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会话登录。
浙公网安备 33010602011771号