| 2024-03-9
在进行Linux系统下SSH端口映射的操作之前,我们需要明确一些要求:
1.从安全角度看,考虑使用sftp更为安全。
2.线上服务器提供在线服务,需要对用户进行控制,仅允许用户在自己的home目录下活动。
3.用户只能使用sftp,不能通过ssh进行操作。
创建sftp组和用户:
首先,我们需要创建一个名为sftp的组,以及一个sftp用户(这里以mysftp为例)。
groupadd sftp
useradd -g sftp -s /bin/false mysftp
passwd mysftp
4.设置用户的home目录和系统版本检查:
为了满足要求,我们需要将sftp组的用户的home目录设置为特定路径,并进行openssh版本检查。
mkdir -p /data/sftp/mysftp
usermod -d /data/sftp/mysftp mysftp
ssh -v
确保openssh版本在4.8p1以上。
5.配置sshd_config:
编辑sshd_config文件,配置sftp服务和限制用户权限。
vim +132 /etc/ssh/sshd_config
注释掉原有的sftp-server配置,添加以下几行:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
6.设定chroot目录权限:
设置chroot目录的所有者和权限。
chown root:sftp /data/sftp/mysftp
chmod 755 /data/sftp/mysftp
7.创建用户可写入的目录:
为了使用户能够上传文件,需要创建一个可写入的目录。
mkdir /data/sftp/mysftp/upload
chown mysftp:sftp /data/sftp/mysftp/upload
chmod 755 /data/sftp/mysftp/upload
8.重启sshd服务:
完成上述配置后,重启sshd服务使其生效。
service sshd restart
9.关闭selinux(如果需要):
如果出现无法上传文件的权限问题,可尝试关闭selinux。
setenforce 0
通过以上步骤,我们成功配置了Linux系统下SSH端口映射,实现了对用户的严格控制和安全要求。现在,用户mysftp可以通过sftp客户端登录,并在upload目录中上传文件。这个过程中,我们还注意了selinux的设置,确保了系统的稳定性和安全性。
对于需要远程访问的场景,可以考虑使用花生壳进行端口映射,实现从外部网络访问FTP服务器。通过花生壳的服务,你可以获得一个公网访问地址,将其映射到服务器上FTP的端口,从而实现远程访问。这样,你可以方便地在任何地方连接到你的FTP服务器。