30
2024
10
15:40:43

sftp基本介绍与搭建和使用

ssh下载地址:


https://mina.apache.org/sshd-project/downloads.html


 


sftp基本介绍:


sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp有着几乎一样的语法和功能。SFTP 为 SSH的一部份,和vsftpd一点关系没有,是一种传输档案至 Blogger 伺服器的安全方式。本身没有守护进程,是包含在ssh中,默认端口也是22。


sftp服务器有两种搭建方式:


1、直接在系统上新建一个用户即可,此种方式最简单,但最不安全,用户sftp登陆之后可以随意切换目录,切用户可以ssh登陆到系统,很不安全,生产环境中不会这么干,故不介绍;


2、标准sftp的搭建


 


 


sftp搭建 方式1

##系统已经有并且启动了ssh服务的情况下;


1.添加sftp用户


adduser user1


passwd user1


usermod -s /bin/false user1


usermod -d /data/wwwroot/user1/ user1


 


2.修改sftp配置


vi /etc/ssh/sshd_config


##找到 Subsystem sftp 这一行,修改成:


Subsystem sftp internal-sftp


UsePAM yes


Match user user1


ForceCommand internal-sftp


ChrootDirectory /data/wwwroot/user1/


##多个用户请重复配置这三行:


Match user user2


ForceCommand internal-sftp


ChrootDirectory /data/wwwroot/user2/


 


3.设置sftp用户目录和权限


mkdir /data/wwwroot/user1/upload chown -R sftpuser1:root /data/wwwroot/user1/upload


chmod -R 755 /data


chmod -R 775 /data/wwwroot/user1/upload


 


4.启动ssh服务


service sshd restart                        ##重启ssh服务


或者


/etc/init.d/sshd restart


或者


kill -9 `ps -ef| grep "/usr/sbin/sshd -D" | awk '{print $2}'` >/dev/null 2>&1


/usr/sbin/sshd -D &


 


给sftp新用户的家目录的权限设定有几个要点:

1、由 ChrootDirectory 指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是 root


2、由 ChrootDirectory 指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限(最大权限 755)


3.如果需要添加管理员用户,可以设置ChrootDirectory目录属组为sftp,然后把所有的用户和管理员用户属组均改为sftp.具体可参考Dockerfile实例部分。


或者通过软链接实现:


ln -s /sftp/wwwroot /sftp/wwwroot/admin


password=`mkpasswd admin`;useradd -b /sftp/admin admin;echo "admin:$password" | chpasswd;echo $password


 


 


SFTP搭建 方式2

##在没有ssh的镜像或者系统中;以及通过用户组方式控制sftp用户登陆;


 


1.ssh安装配置


yum install -y curl tar unzip which sudo initscripts openssh-server openssh-clients rsync


yum install -y libaio.so.1* ll* vim*


yum update -y libselinux


 


echo 'root'| passwd --stdin root


ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key


ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key


ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa


ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_ecdsa_key


ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_ed25519_key


cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys


 


sed -i "/^[^#]*UsePAM/ s/.*/#&/" /etc/ssh/sshd_config


echo "Port=39535" >> /etc/ssh/sshd_config


 


###添加sftp用户


groupadd sftp


cat /etc/group


mkdir -p /data/sftp


useradd -d /data/sftp/mysftp -s /bin/false -g sftp mysftp


rm -rf /data/sftp/mysftp/.bash*


echo mysftp |passwd --stdin mysftp


 


##编辑sftp配置


vi /etc/ssh/sshd_config


##先注释下面一行,


# Subsystem sftp /usr/libexec/openssh/sftp-server


##然后添加以下配置:


Subsystem sftp internal-sftp


Match Group sftp


ChrootDirectory /data/sftp/%u


ForceCommand internal-sftp


AllowTcpForwarding no


X11Forwarding no


 


备注:


# 注释掉该行


# Subsystem sftp /usr/lib/openssh/sftp-server


# 使用系统默认的sftp服务


Subsystem sftp internal-sftp


# 匹配组名 sftp


Match Group sftp


# 指定活动目录


ChrootDirectory /data/sftp/%u


# 由ChrootDirectory指定的目录开始一直往上到系统根目录的目录属主都是root.


# 由ChrootDirectory指定的目录开始一直往上到系统根目录都不可以具有群组写入权限.


# 禁用端口转发


AllowTcpForwarding no


X11Forwarding no


# 强制执行内部SFTP,并忽略任何~/.ssh/rc中的命令


ForceCommand internal-sftp


 


##设置Chroot目录权限


chown root:sftp /data


chown root:sftp /data/sftp


chown root:sftp /data/sftp/mysftp


chmod 755 /data/sftp/mysftp


 


##新建一个目录供sftp用户mysftp上传文件


mkdir /data/sftp/mysftp/upload


chown mysftp:sftp /data/sftp/mysftp/upload


chmod 755 /data/sftp/mysftp/upload


 


##启动sshd服务


service sshd start


或者


/usr/sbin/sshd -D &


 


##验证sftp登陆使用:


sftp -P 39535 mysftp@localhost



f823ed92e1a96f349f1b96811deb0a11_45f446a12c7712a6ee4c0e4de99e3c0c.png

 


##新建测试用户:


useradd -d /data/sftp/119sftp -s /bin/false -g sftp 119sftp


rm -rf /data/sftp/119sftp/.bash*


echo 119sftp |passwd --stdin 119sftp


chown root:sftp /data/sftp/119sftp


mkdir /data/sftp/119sftp/upload


chown 119sftp:sftp /data/sftp/119sftp/upload


chmod 755 /data/sftp/119sftp


chmod 755 /data/sftp/119sftp/upload


 


##登陆测试


sftp -P 39535 119sftp@localhost


5088714a54a3e636f663e2c2f702a890_215d886382ec25229392537ef7f2f58d.png



推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8259.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: