Skip to main content

Stuck running sftp server on termux alpine for multi-user setup

The below is my journey trying to get multi-user sftp working using alpine on termux

pkg update && pkg upgrade
pkg install proot-distro openssh

proot-distro install alpine

proot-distro login alpine

apk update
apk upgrade

apk add openssh shadow sudo

apk add vim

vim /etc/ssh/sshd_config

Port 8022
PermitRootLogin no
PasswordAuthentication yes
Subsystem sftp internal-sftp

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

addgroup sftpusers

adduser user1
adduser user1 sftpusers

mkdir -p /sftp/user1/upload

chown root:root /sftp/user1
chmod 755 /sftp/user1

chown user1:sftpusers /sftp/user1/upload

How I run my server each time

pkill sshd
rm -f /etc/ssh/ssh_host_*
ssh-keygen -A
/usr/sbin/sshd -D -d -d -d

From another termux session

sftp -P 8022 user1@127.0.0.1

Connection reset by 127.0.0.1 port 8022
Connection closed

Some troubleshooting steps

mkdir -p /run/sshd
chmod 755 /run/sshd

grep sshd /etc/passwd
sshd:x:22:22:sshd:/dev/null:/sbin/nologin

This is where I am stuck
sshd debug output:

debug3: ssh_sandbox_init: preparing seccomp filter sandbox [preauth]
debug3: privsep user:group 22:22 [preauth]
debug1: permanently_set_uid: 22/22 [preauth]
permanently_set_uid: was able to restore old [e]gid [preauth]
debug1: monitor_read_log: child log fd closed
debug3: mm_request_receive: entering
debug3: mm_request_receive: monitor fd closed
debug1: mm_reap: child exited with status 255
debug1: do_cleanup
debug1: Killing privsep child 13150

Comments

Popular posts from this blog

Hobby project - Store and view exchange rates

The next step in my project was to test out being able store and display the rates in a database. I decided to use nodejs and supabase for this. Everything worked beautifully. Only hickup was the following error due to my package.json not being correct. SyntaxError: Cannot use import statement outside a module Added this to package.json   "type": "module" This works beautifully. Right now I am just testing fragments of what could be part of a bigger system to see what is possible and what works and how easy to code on a mobile. There is no fully functioning integrated end to end system just yet. This is also what I tested. A serverless append-only database using GitHub + Actions + Pages. That’s basically a lightweight backend system. This was the ChatGPT prompt I used. Guide me through each step. This is what I want. A manually run github actions that adds to docs/data.json with the current date and time. docs/index.html displays all the entries in data.json. Make s...

What is important

Every now and again, I get reminded of the why. Why I have handed my life over to God. It is 3:08 p.m. and I have decided to write. Honestly, I feel like I could end this blog post right here. What more is there to say? God above all else. God is our compass on this journey called life. Everything else can become a distraction. Maybe not everything, but certainly many things. You get the point. What is important? What do we prioritise? What do we make time for? The answers look different for everyone. Our lives are different. We are tested differently. We are all products of our circumstances, and those circumstances vary from person to person. Yet God is the common thread across humanity and throughout time. God always was and always will be. One day, we will answer to God. We will give account to God. We cannot live without food, water, and oxygen, but all of those things come from God. So how can we live without God? How timely. I just received a notification from the Quranly app: S...

Hobby coding project - Queries for play whe data

I have an interest in open data and being able to query that data and gain beautiful insights. One data set that would be interesting is the play whe results data. Our open data is lacking in Trinidad and I will try to contact NLCB to see if they can provide and maintain the data online. But in the meanwhile I will use randomised data to create the website and do my testing. First thing I did was install sqlite on termux pkg update && pkg upgrade pkg install sqlite sqlite3 --version Create my database in my project folder sqlite3 results.db Useful commands .exit .quit Exit from multiline prompt ; SQL to create my table (create_tbl_results.sql) CREATE TABLE DrawResults (     DrawNo INTEGER PRIMARY KEY,                           DrawDate DATE,     ResultNo INTEGER CHECK (ResultNo BETWEEN 1 AND 36),     DrawTime INTEGER CHECK (DrawTime BETWEEN 1 AND 4) ); SQL to create the random dat...