AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 591781
Accepted
zigojacko
zigojacko
Asked: 2014-04-29 06:20:07 +0800 CST2014-04-29 06:20:07 +0800 CST 2014-04-29 06:20:07 +0800 CST

在 CentOS 上创建 SFTP 用户并监禁到 chroot - 用户身份验证错误

  • 772

我有一个带有 Digital Ocean 的 CentOs 6.4 版,并希望成功创建 SFTP 用户并将他们监禁到用户自己的 chroot 主目录,但我担心我会把这件事弄得一团糟。

我尝试了很多东西,实在太多了,无法在此处列出,因为大多数可能不正确或没有多大意义,但我觉得应该是正确的过程,我尝试过的是:-

创建一个组sftp:-

groupadd sftp

创建一个用户并设置他们的主目录:-

useradd -d /var/www/vhosts/domain.com dummyuser

为用户设置密码:-

passwd dummyuser

将用户组更改为“sftp”:-

usermod -g sftp dummyuser

将用户的外壳设置为/bin/false:-

usermod -s /bin/false dummyuser

sshd_config编辑( )中的子系统/etc/ssh/:-

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

将以下内容添加到sshd_config文件底部:-

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

我确保以下所有目录都是root:root:-

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

如果我然后尝试使用用户dummyuser(在 WinSCP 中)通过 SFTP 登录到服务器,我会得到以下信息:-

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

我想要实现的只是将用户监禁到他们的主目录。我还设置和配置了 vsftpd。用户可以正常登录,但可以访问整个服务器 - 我根本没有设法让监狱工作。

编辑

忘了说,然后我sshd也重新启动了:-

service sshd restart

当 WinSCP 中产生错误时,他们的帮助页面在这里。

记录结果

/var/log/secure

我将实际的服务器名称替换为server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
sftp
  • 2 2 个回答
  • 49687 Views

2 个回答

  • Voted
  1. Best Answer
    faker
    2014-04-29T07:05:43+08:002014-04-29T07:05:43+08:00

    这是一个常见的陷阱:
    直到 chroot 主目录的所有文件夹都必须归用户所有并且只能由root用户写入。
    文件夹不能是组可写的 - 即使组是root.

    • 15
  2. Guy Boisvert
    2014-09-05T05:45:47+08:002014-09-05T05:45:47+08:00

    我在 CentOS 6.5 上找到并成功配置了 sftp: http ://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

    编辑 sshd 配置:

    vim /etc/ssh/sshd_config

    #Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")
    
    add:
    
    Subsystem sftp internal-sftp
    Match Group sftp-only
    ChrootDirectory /var/www/%u
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp
    

    退出并保存。

    然后:

    mkdir /etc/skel2
    groupadd sftp-only
    getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)
    

    对于名为“testuser”的新用户(GID 为 500 的 sftp-only 组的成员):

    useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser
    

    (我使用空的 /etc/skel2 所以默认情况下 CentOS 不会复制 .bashrc 等)

    mkdir -p /var/www/testuser/home/testuser
    
    chown root:sftp-only /var/www/testuser
    chmod 750 /var/www/testuser
    
    chown root:root /var/www/testuser/home
    chmod 755 /var/www/testuser/home
    
    chown testuser:sftp-only /var/www/testuser/home/testuser
    chmod 770 /var/www/testuser/home/testuser
    

    所以在这个例子中,我让它安全访问管理网站的外部咨询公司。您可以在创建所有这些之后:

    mkdir /var/www/testuser/home/testuser/www.somesite.com
    chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
    chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)
    

    可以根据需要微调所有这些。

    希望这有帮助!

    Guy Boisvert IngTegration inc. http://www.ingtegration.com

    • 5

相关问题

  • 在没有硬件防火墙的情况下保护直接连接到 Internet 上的 Windows 服务器的过程

  • FTP、SCP 或其他

  • 将我的 SFTP 用户监禁到他们的主目录是否公平?

  • 为什么 scp -scp 工作但没有那个标志的 scp

  • 使用 OpenSSH 设置 chrooted SFTP 登录

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve