Using Laravel 10+ and PHP 8.2 and am attempting to connect my local server to a remote sftp server. The filesystems.php file has been updated with:
'sftp_internal' => [
'driver' => 'sftp',
'host' => env('INTERNAL_SFTP_HOST'),
'port' => (int) env('INTERNAL_SFTP_PORT', 22),
'username' => env('INTERNAL_SFTP_USER'),
'password' => env('INTERNAL_SFTP_PWD'),
'root' => env('INTERNAL_SFTP_ROOT'),
'visibility' => 'public',
'permPublic' => 0775,
'directoryPerm' => 0755,
'timeout' => 30,
],
When I attempt to connect, I see in my syslog on the sftp server that systemd[1]: Started Session 42311 of user sftpuser. and no errors. I'm using a VPN that has access to PORT 22 for SSH and SFTP use and am pretty clearly connecting ok.
If I attempt to connect in FileZilla, I see the expected files. If I connect like so: sftp sftp@<IP_ADDRESS> I also see the expected files.
I have a directory on the sftp server (/var/sftp/portal_uploads). The INTERNAL_SFTP_ROOT value is set to /var/sftp. The owner of sftp is root. The owner of portal_uploads is sftpuser. Perms appear as such:
ls -la /var/sftp:
drwxr-xr-x 3 root root 4096 Jan 30 11:51 .
drwxr-xr-x 16 root root 4096 Jan 29 14:33 ..
drwx------ 19 sftpuser sftpuser 4096 Jan 30 08:49 portal_uploads
I have configured sftp in the /etc/ssh/sshd_config like so:
# override default of no subsystems
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
And I did restart the ssh service with systemctl restart ssh. systemctl status ssh also displays sftp success messages i.e., Accepted password for sftpuser from <MY_IP> port 51755 ssh2
So the problem... When I attempt to interact in tinker I am not able to view any files or directories:
Storage::disk('sftp_internal')->allFiles(); // RETURNS []
Storage::disk('sftp_internal')->allDirectories(); // ALSO RETURNS []
Running each of those has the same success message in /var/log/syslog on the SFTP server. What might be missing here to deny access to the files? /var/sftp/portal_uploads is full of directories of files organized by date:
root@<SERVER>:/var/sftp/portal_uploads# ls -la
total 1396
drwx------ 19 sftpuser sftpuser 4096 Jan 30 08:49 .
drwxr-xr-x 3 root root 4096 Jan 30 11:51 ..
drwxrwxrwx 2 sftpuser sftpuser 4096 Jan 30 08:48 2022-09
drwxrwxrwx 2 sftpuser sftpuser 45056 Jan 30 08:48 2022-10
drwxrwxrwx 2 sftpuser sftpuser 45056 Jan 30 08:48 2022-11
drwxrwxrwx 2 sftpuser sftpuser 53248 Jan 30 08:48 2022-12
drwxrwxrwx 2 sftpuser sftpuser 69632 Jan 30 08:48 2023-01
drwxrwxrwx 2 sftpuser sftpuser 65536 Jan 30 08:48 2023-02
drwxrwxrwx 2 sftpuser sftpuser 61440 Jan 30 08:48 2023-03
drwxrwxrwx 2 sftpuser sftpuser 69632 Jan 30 08:48 2023-04
drwxrwxrwx 2 sftpuser sftpuser 86016 Jan 30 08:48 2023-05
drwxrwxrwx 2 sftpuser sftpuser 65536 Jan 30 08:48 2023-06
drwxrwxrwx 2 sftpuser sftpuser 77824 Jan 30 08:48 2023-07
drwxrwxrwx 2 sftpuser sftpuser 122880 Jan 30 08:48 2023-08
drwxrwxrwx 2 sftpuser sftpuser 102400 Jan 30 08:48 2023-09
drwxrwxrwx 2 sftpuser sftpuser 147456 Jan 30 08:48 2023-10
drwxrwxrwx 2 sftpuser sftpuser 135168 Jan 30 08:49 2023-11
drwxrwxrwx 2 sftpuser sftpuser 135168 Jan 30 08:49 2023-12
drwxrwxrwx 2 sftpuser sftpuser 131072 Jan 30 08:49 2024-01