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 / 问题 / 838702
Accepted
dsl101
dsl101
Asked: 2017-03-17 08:14:38 +0800 CST2017-03-17 08:14:38 +0800 CST 2017-03-17 08:14:38 +0800 CST

通过端口 22 的 SFTP 或通过端口 20 / 21 的 vsftp - 保护对服务器的 FTP 访问的最佳方式

  • 772

我已经阅读了很多关于 SF 的文章和问题,但仍然无法弄清楚我这样做的方式是否 (a) 可能,并且 (b) 安全。

服务器在 AWS EC2 上运行,所有访问都通过 SSH 密钥。我也只向我自己的 IP 开放端口 22,但似乎如果我想允许其他人通过 SFTP 访问,我需要向全世界开放端口 22(或者花我的时间管理动态 IP 地址的防火墙规则)。这真的比端口 21 上的 vsftp 更好吗?

假设目前端口 22 上的 SFTP 是最好的,这就是我所做的:

  • 使用公钥/私钥创建了一个“ftp”用户
  • 设置/home/ftp/.ssh/authorized_keys和测试 SSH 访问
  • 在指向中添加了一个ChrootDirectory条目/etc/ssh/sshd_config/var/www/html
  • 从向下调整权限,/var/www使 chroot '工作'

现在,我陷入了一个看似 22 的问题,我怀疑(希望)只是配置错误。如果没有 sshd_config 中的 chroot 块,我可以通过 Putty 或 SFTP 客户端进行连接,一切都很好——除了可以访问整个文件系统。有了 chroot 块,我Could not chdir to home directory /home/ftp在身份验证期间遇到了错误,因为现在该/home/ftp/.ssh文件夹无法访问,因此密钥不起作用。这个老问题/答案建议在.ssh文件夹中放置一个文件/var/www/html/夹,但这对我来说似乎很奇怪 - 这样做真的可以吗,因为它可以被 Web 服务器访问?

是否有更“正确”的方式让用户通过 SSH 密钥连接然后仅限于 /var/www/html?

ssh sftp chroot
  • 1 1 个回答
  • 4942 Views

1 个回答

  • Voted
  1. Best Answer
    Zoredache
    2017-03-17T08:52:33+08:002017-03-17T08:52:33+08:00

    在您的 OpenSSH 配置中,您可以将一些配置放在匹配块中。这使您可以为不同的用户/组/网络设置不同的配置。

    所以你可以把你所有的 sftp 用户放到一个组 sftpd 中,然后像这样添加一个块。这种强制 chroot 和强制 sftp 仅适用于该组。然后,您的主帐户就可以正常使用 shell。

    Match Group sftp
        ChrootDirectory /var/www/
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp
    

    /var/www/html/ 文件夹中的 .ssh 文件夹,但这对我来说似乎很奇怪 - 真的可以吗

    这还不是最糟糕的事情。人们希望这些用户没有进行出站连接,因此该文件夹中将没有密钥对,也没有 known_hosts,只留下 authorized_keys 文件。其中只有公钥。公钥是公开的,共享它们应该不是特别危险。尽管将 sftp 帐户的 chroot 目录设置为至少一个来自 web 根目录的目录并不是一个坏主意,这样 .ssh 就不会在 web 根目录之外公开提供。如果您的 chroot 是,/var/www并且您为 Web 服务器设置了您的 root,/var/www/html那似乎可以满足您的担忧。

    • 0

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

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