服务器 ubuntu 18.04 上的 sftp 设置

服务器 ubuntu 18.04 上的 sftp 设置

今天我开始着手进行 SFTP 设置以实现实时同步。

尽管基本默认配置 /etc/ssh/ssh_config 文件

host *
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes

服务器不遵循此配置文件。例如,在创建几个用户后,尽管我使用了

DenyUsers USER1,USER2

我仍然可以通过 SSH 进行远程连接

尽管没有关于 sftp 的子系统,但我可以通过 sftp 访问 $sftp[电子邮件保护]

我也关注了此链接但当我登录后,我可以在整个文件系统中移动,并且不能将用户限制在一个目录中

最后,我发现有一些其他文件覆盖了默认设置文件,或者有一些我看不到的东西。

一般问题:每次更改文件 /etc/ssh/ssh_config 后,我都会使用以下命令重新启动 ssh 守护程序

service ssh restart

考虑到我通过 ssh 远程操作服务器,每次重启后连接难道不应该断开吗?这种情况不应该发生

谢谢

答案1

请执行以下操作

  • 编辑/etc/ssh/sshd_config
  • 确保创建 sftpuser 和 sftp 组
  • 确保有一个具有 root 所有权的目录,您将将其用作 chroot 例如sftpdir
  • 我附加了一个 SFTP 配置,允许通过端口 22 进行 SSH 和在随机端口进行 SFTP。它会阻止 SSH 访问,只允许对该端口进行 SFTP 访问sftpuser。秘诀在于使用 internal-sftp 子系统和Match子句。
  • 重启 sshd 并检查状态
# This is the sshd server. Configured for SFTP access on a random port.
# See sshd_config(5) for more information.
Port 279
Port 22
PasswordAuthentication no
ChallengeResponseAuthentication no

# Cipher suite
KexAlgorithms +diffie-hellman-group1-sha1,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers +3des-cbc,aes128-cbc,aes128-ctr,aes256-ctr
#+blowfish-cbc
#,
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
X11Forwarding no
PrintMotd no
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem    sftp    internal-sftp
# Allow SSH over port 22 for Ubuntu but truncate SFTP.
Match User ubuntu  LocalPort 22
  ForceCommand "/bin/bash"
Match User ubuntu LocalPort 279
    ForceCommand exit
PermitTunnel no
AllowAgentForwarding no
X11Forwarding no
AllowTcpForwarding no
# Allow special feature on Random port 279
Match LocalPort 279 group sftp
  ChrootDirectory /home/sftpdir

答案2

我刚刚在构建我的 SFTP 服务器,遇到了您的问题。我已关注本文并且用户没有 shell 访问权限,只能访问自己的主目录。

相关内容