美文网首页
centos搭建sftp环境

centos搭建sftp环境

作者: 缘木与鱼 | 来源:发表于2019-12-23 16:11 被阅读0次

sftp的默认端口为sshd的端口,为22端口。

1、查看openssh版本 ssh -V

[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

openssh版本要求大于4.8p1。

2、创建sftp组

groupadd sftp

3、创建sftp用户

[root@localhost ~]# useradd -g sftp -s /sbin/nologin -M sftpUser
[root@localhost ~]# passwd sftpUser
输入密码 www@ftpcom

说明:
-g 分组
-s /sbin/nologin  不允许该用户shell登录
-M 不自动建立用户的目录

4、创建目录

[root@localhost ~]# mkdir -p /data/sftp/mysftp
[root@localhost ~]# usermod -d /data/sftp/mysftp sftpUser

5、修改配置文件 sshd_config

vim /etc/ssh/sshd_config

修改下面一行:
# Subsystem      sftp    /usr/libexec/openssh/sftp-server
改成
Subsystem       sftp    internal-sftp

# 添加以下内容:
Match Group sftp                            # 限制的用户组
ChrootDirectory /data/sftp/mysftp           # 根目录
ForceCommand    internal-sftp              
AllowTcpForwarding no
X11Forwarding no

6、 设置Chroot目录权限

chown root:sftp /data/sftp/mysftp
chmod 755 /data/sftp/mysftp

7、设置可以写入的目录

mkdir /data/sftp/mysftp/upload
chown sftpUser:sftp /data/sftp/mysftp/upload
chmod 755 /data/sftp/mysftp/upload

需要关闭selinux

vim /etc/selinux/config
将文件中的SELINUX=enforcing 修改为 SELINUX=disabled

8、重启ssh

[root@localhost ~]# systemctl restart sshd.service

9、测试连接

1)、本机测试连接 sftp sftpUser@localhost

[root@localhost ~]# sftp sftpUser@localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:j6JeorjQwdwSgYUUXUOaq/rtCEfQ/Qa6qvj9S/cRCVg.
ECDSA key fingerprint is MD5:e8:9e:2d:47:a9:87:cc:c9:57:d1:8f:b0:64:b9:b5:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
sftpUser@localhost's password:
Connected to localhost.
sftp>

2)、其他机器连接 sftp sftpUser@10.20.0.14

[root@localhost ~]# sftp sftpUser@10.20.0.14
sftpUser@10.20.0.14's password:
Connected to 10.20.0.14.
sftp> 

3)、使用端口连接 sftp -P 22 sftpUser@10.20.0.14

[root@localhost ~]# sftp -P 22 sftpUser@10.20.0.14
sftpUser@10.20.0.14's password:
Connected to 10.20.0.14.
sftp>

其实我是想使用一个其他的端口,如 sftp -P 6666 sftpUser@10.20.0.14,但是在连接的时候并不能连接成功。也有说法是: 使用 -o 指定端口号,但是也没有用。 猜测应该是要修改sftp的端口才能生效,这里并没有继续往下尝试。

[root@localhost ~]# sftp -oPort=60001 sftpUser@10.20.0.14
ssh: connect to host 10.20.0.14 port 60001: Connection refused
Couldn't read packet: Connection reset by peer
[root@localhost ~]# sftp -P 6666 sftpUser@10.20.0.14
ssh: connect to host 10.20.0.14 port 6666: Connection refused
Couldn't read packet: Connection reset by peer
[root@localhost ~]#

遇到的问题: 重启ssh服务

[root@host-10-190-5-60 ~]# systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

通过查看 systemctl status sshd.service 和 journalctl -xe 来发现问题


状态.png journalctl -xe.png

最后发现错误为 : Directive 'ListenAddress' is not allowed within a Match block

然后根据提示 错误在配置文件/etc/ssh/sshd_config的第152行,然后找到第152行:


配置文件.png

内容为: ListenAddress 0.0.0.0:22

解决办法:将这一行注释即可。

# ListenAddress 0.0.0.0:22

还有另一种说法,将0.0.0.0 换成本机IP,但是我试了之后,重启sshd服务还是会出现之前的问题。

相关文章

网友评论

      本文标题:centos搭建sftp环境

      本文链接:https://www.haomeiwen.com/subject/yqaznctx.html