我正在尝试使用 openssh 内置 sftp 设置 sftp 服务器。
Subsystem sftp /usr/lib/openssh/sftp-server
并且我按照以下步骤创建了用户(或多或少(使用 ansible),我确实使用 /sbin/nologin 作为 shell,并使用 /dev/null 作为 skel) https://sftpcloud.io/learn/sftp/how-to-setup-sftp-server-on-ubuntu-22-04
但当我尝试连接时
sftp myuser@myip
我收到提示并输入密码,但失败了
client_loop: send disconnect: Broken pipe
Connection closed.
Connection closed
问题是,现在用户的主目录中充满了垃圾。
$ ls -a
snap/ .cache .local
我在系统日志中看到很多事情发生,这些事情似乎与以普通用户身份登录有关(我猜)。以下是一些内容
systemd[1]: Created slice user-1003.slice - User Slice of UID 1003.
systemd[1]: Starting [email protected] - User Runtime Directory /run/user/1003...
snapd-desktop-i[4568]: Detected new session 42 at /org/freedesktop/login1/session/_342
systemd[1]: Finished [email protected] - User Runtime Directory /run/user/1003.
systemd[1]: Starting [email protected] - User Manager for UID 1003...
systemd-xdg-autostart-generator[14091]: Exec binary 'start-pulseaudio-x11' does not exist: No such file or directory
systemd-xdg-autostart-generator[14091]: /etc/xdg/autostart/pulseaudio.desktop: not generating unit, executable specified in Exec= does not exist.
systemd[14080]: Queued start job for default target default.target.
systemd[14080]: Created slice app.slice - User Application Slice.
systemd[14080]: Created slice session.slice - User Core Session Slice.
systemd[14080]: Started ubuntu-report.path - Pending report trigger for Ubuntu Report.
systemd[14080]: Started launchpadlib-cache-clean.timer - Clean up old files in the Launchpadlib cache.
systemd[14080]: Starting gpg-agent-ssh.socket - GnuPG cryptographic agent (ssh-agent emulation)...
systemd[1]: Started [email protected] - User Manager for UID 1003.
systemd[1]: Started session-42.scope - Session 42 of User myuser.
systemd[14080]: Starting gnome-initial-setup-copy-worker.service - GNOME Initial Setup Copy Worker...
systemd[14080]: Started pipewire.service - PipeWire Multimedia Service.
systemd[14080]: Started filter-chain.service - PipeWire filter chain daemon.
systemd[14080]: Started snap.snapd-desktop-integration.snapd-desktop-integration.service - Service for snap application snapd-desktop-integration.snapd-desktop-integration.
systemd[14080]: Started wireplumber.service - Multimedia Service Session Manager.
systemd[14080]: Started pipewire-pulse.service - PipeWire PulseAudio.
systemd[14080]: Startup finished in 270ms.
systemd[14080]: Starting dbus.service - D-Bus User Message Bus...
pipewire[14099]: mod.jackdbus-detect: Failed to receive jackdbus reply: org.freedesktop.DBus.Error.ServiceUnknown: The name org.jackaudio.service was not provided by any .service files
wireplumber[14113]: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
systemd[14080]: snap.snapd-desktop-integration.snapd-desktop-integration.service: Main process exited, code=exited, status=1/FAILURE
systemd[14080]: snap.snapd-desktop-integration.snapd-desktop-integration.service: Failed with result 'exit-code'.
所以我猜登录会触发“其他操作”,如何禁用正在发生的额外操作,只保留 sftp 呢?我确实有其他“普通”用户登录到我尝试设置为 sftp 服务器的服务器,所以我必须以特殊方式处理这些 sftp 用户。但是该怎么做呢?
我使用 Ubuntu 24.04。我的 sshd_config 显示:
UsePAM yes