在Linux系统中配置SFTP(SSH File Transfer Protocol)通常涉及以下几个步骤:
首先,确保你的系统上已经安装了OpenSSH服务器。大多数Linux发行版默认已经安装了OpenSSH服务器,如果没有,可以使用以下命令进行安装:
sudo apt-get update
sudo apt-get install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # CentOS/RHEL
sudo dnf install openssh-server # Fedora
编辑SSH服务器的配置文件 /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
找到并修改以下配置项:
允许SFTP用户登录:确保以下行没有被注释掉并且设置为yes
:
Subsystem sftp /usr/lib/openssh/sftp-server
限制用户登录:如果你只想允许特定用户通过SFTP登录,可以添加或修改以下配置:
AllowUsers username1 username2
或者限制所有用户只能通过SFTP登录:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
创建SFTP用户组(可选):如果你使用Match Group
配置,需要创建一个SFTP用户组并添加用户到该组:
sudo groupadd sftpusers
sudo usermod -aG sftpusers username
如果你希望限制SFTP用户只能访问其主目录,可以配置Chroot环境:
sudo nano /etc/ssh/sshd_config
添加或修改以下配置:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
然后创建用户的主目录并设置正确的权限:
sudo mkdir -p /home/username
sudo chown root:root /home/username
sudo chmod 755 /home/username
保存并退出配置文件后,重启SSH服务以应用更改:
sudo systemctl restart sshd
使用SFTP客户端连接到服务器,测试配置是否成功:
sftp username@hostname
如果一切配置正确,你应该能够成功登录并进行文件传输。
确保你的防火墙允许SSH连接(默认端口22):
sudo ufw allow 22/tcp
sudo ufw reload # 如果使用UFW防火墙
或者使用iptables
:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo service iptables save
通过以上步骤,你应该能够在Linux系统中成功配置SFTP。