欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

​sftp基本介绍与搭建和使用 有大用

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配置

vim /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

 

##新建测试用户:

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

 


来自 http://www.taodudu.cc/news/show-3685393.html


普通分类: