![服务器 ubuntu 18.04 上的 sftp 设置](https://linux22.com/image/1011945/%E6%9C%8D%E5%8A%A1%E5%99%A8%20ubuntu%2018.04%20%E4%B8%8A%E7%9A%84%20sftp%20%E8%AE%BE%E7%BD%AE.png)
今天我开始着手进行 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 访问权限,只能访问自己的主目录。