Monthly Archives: July 2021

Setting Up SFTP on Ubuntu 20.04

Basic SFTP Setup

A recent project had me doing a quick refresh of how to setup an SFTP server. I thought I’d put those steps here. To setup a basic SFTP server on ubuntu, we’ll create a a dedicated sftp user and group, and a directory for the root sftp connection. Then lock down the directory to only users in our sftp group.

Start by creating a new group.

sudo addgroup sftp_group

Create a new user specifically for SFTP, and add them to the group. Use the “-M" flag will create a user without a home to directory.

sudo useradd -M sftp_user -g sftp_group

Create a password for the user:

sudo passwd sftp_user

Now we need to create a root directory for SFTP and make sure root is the owner

sudo mkdir -p /sftp
chown root:root /sftp

Now create a SFTP directory for our user and lock permission to only this user

sudo mkdir /sftp/Data
sudo chown sftp_user:sftp_group /sftp/Data
sudo chmod 700 /sftp/Data

It’s time to install ssh

sudo apt-get install ssh

Edit the config.

sudo nano /etc/ssh/sshd_config

Add these settings to end of the file for our sftp settings:

Match group sftp_group
ChrootDirectory /sftp
X11Forwarding no 
AllowTcpForwarding no 
ForceCommand internal-sftp

You can add or uncomment any additional settings to the file that you need as well. Here’s a few I added.

Change the default ssh port:

Port 4422

Change logging level:

LogLevel VERBOSE

Disable root ssh:

PermitRootLogin no

Set session timeout. This will disconnect idle connections after 5 minutes.

ClientAliveInterval 300

When you’re done editing the file, restart ssh service:

sudo systemctl restart ssh

Connect to SFTP Server

To test your connection, open an sftp client like FileZilla and create a new site (File > Site manager > new site). Enter the IP or hostname of the sftp server, the port number, and username and password. Then hit “Connect“

If successful, you should open to the default directory in your “sshd_config” file (/sftp). Open the “Data” folder, create a txt file and upload to the server.

Jenkins Server Not Accessible By IP Address

I installed Jenkins via homebrew on Big Sur 11.4 and couldn’t access the web interface from another computer on the same LAN. Turns out Jenkins default listening address is the loopback,127.0.0.1, so it’s only accessible from the localhost.

You need to update the “homebrew.mxcl.jenkins.plist” file, and change the httpListenAddress to 0.0.0.0. save the file and restart Jenkins.


#stop jenkins 
brew services stop jenkins

#edit plist
sudo nano /usr/local/Cellar/jenkins/2.302/homebrew.mxcl.jenkins.plist 

# change: <string>--httpListenAddress=127.0.0.1</string>
# to:     <string>--httpListenAddress=0.0.0.0</string>

#restart jenkins
brew services start jenkins

The plist file for my system is:

/usr/local/Cellar/jenkins/2.302/homebrew.mxcl.jenkins.plist