我有一台服务器,需要从两个不同位置导入外部数据。一个位置自动发送数据,另一个位置由不同的用户提供数据。
我希望上传数据的用户看不到自动发送的数据。
因此我考虑在主服务器上创建两个 SFTP 实例(每个实例附加到特定用户)。
我想知道这是否可能?
如果是,我该如何配置 /etc/ssh/sshd_config 来声明两个用户和分配给他们的两个 SFTP 插槽?
答案1
以下是我的问题的解决方案:
# Creation of the SFTP directory
sudo mkdir -p /var/sftp
sudo chown root:root /var/sftp
sudo chmod 751 /var/sftp
# Creation of the user
sudo useradd --system --shell /usr/sbin/nologin --groups sftp --home /var/sftp/user1 user1
sudo useradd --system --shell /usr/sbin/nologin --groups sftp --home /var/sftp/user2 user2
# Creation of the folders
sudo mkdir -p /var/sftp/{user1,user2}
sudo chown root:sftp /var/sftp/user1
sudo chmod 751 /var/sftp/user1
sudo mkdir /var/sftp/user1/files
sudo chown user1:sftp /var/sftp/user1/files
sudo chmod 751 /var/sftp/user1/files
sudo chown root:sftp /var/sftp/user2
sudo chmod 751 /var/sftp/user2
sudo mkdir /var/sftp/user2/files
sudo chown user2:sftp /var/sftp/user2/files
sudo chmod 751 /var/sftp/user2/files
# Server setup
echo -e "\nMatch group sftp" | sudo tee -a /etc/ssh/sshd_config
echo -e "\tChrootDirectory /var/sftp/%u" | sudo tee -a /etc/ssh/sshd_config
echo -e "\tAllowTcpForwarding no" | sudo tee -a /etc/ssh/sshd_config
echo -e "\tX11Forwarding no" | sudo tee -a /etc/ssh/sshd_config
echo -e "\tForceCommand internal-sftp" | sudo tee -a /etc/ssh/sshd_config
sudo systemctl reload ssh
# Password creation
echo "user1:password" | sudo chpasswd
echo "user2:password" | sudo chpasswd