在 CentOS 上使用 SFTP(SSH File Transfer Protocol) 通常不需要额外安装服务,因为 SFTP 是 OpenSSH 的一部分。下面从客户端使用和服务端配置两个方面说明。
sftp user@remote_host
示例:
sftp root@192.168.1.100
如果是非默认端口(如 2222):
sftp -P 2222 user@remote_host
连接成功后:
ls # 查看远程目录
lls # 查看本地目录
cd # 切换远程目录
lcd # 切换本地目录
get file # 下载文件
put file # 上传文件
get -r dir # 递归下载
put -r dir # 递归上传
mkdir # 远程建目录
rm # 删除远程文件
exit / bye # 退出
sftp -i ~/.ssh/id_rsa user@host
CentOS 默认已安装 OpenSSH,一般已支持 SFTP。
systemctl status sshd
如未启动:
systemctl start sshd
systemctl enable sshd
只要用户能 SSH 登录,就能 SFTP:
sftp user@your_centos_ip
useradd sftpuser
passwd sftpuser
vim /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
systemctl restart sshd
这样用户只能 SFTP,且被限制在主目录。
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
UseDNS no
如果你是想:
可以告诉我具体场景,我可以进一步说明。