Passwordless SFTP authentication failing within Jail - "Server refused our key"

Joined
Mar 16, 2023
Messages
3
Hello,

I have been lurking here for quite some time while I figured out how to get my TrueNAS system up and running properly. Until now, I have had no issues.

One of my main uses for my system was to allow some friends to store files on my system from outside of the network. After some research, I settled on using passwordless SFTP authentication through an SSH connection. To keep things secure and separate, I opted to do this for each user within their own jail.

After following various guides such as this one from an old FreeBSD guide, I was able to get password authentication running through SFTP. However, I cannot for the life of me, get passwordless SSH key authentication to work. I should note that I have been able to set this up for myself to SSH and SFTP into TrueNAS itself, but never into a jail. When I attempt to connect through WinSCP with a user I set up, I get the error "Server refused our key". Interestingly enough while attempting to authenticate with user 'root,' I get the error "Server refused public-key signature despite accepting key!" Both errors result in WinSCP prompting for a password even though the jail is configures not to allow password authentication.

Can anyone help me out with this? I am at my wit's end.

For reference, here is my configuration file:
Code:
#       $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $
#       $FreeBSD$

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# Note that some of FreeBSD's defaults differ from OpenBSD's, and
# FreeBSD has a few additional options.

Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# Change to yes to enable built-in password authentication.
PasswordAuthentication no
#PermitEmptyPasswords no

# Change to no to disable PAM authentication
#KbdInteractiveAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

# Set this to 'no' to disable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the KbdInteractiveAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via KbdInteractiveAuthentication 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 KbdInteractiveAuthentication to 'no'.
#UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#UseBlacklist no
#VersionAddendum FreeBSD-20211221

# no default banner path
#Banner none

# override default of no subsystems
Subsystem       sftp    /usr/libexec/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#        PermitTTY no
#        ForceCommand cvs server
Match Group sftp
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding yes
ForceCommand internal-sftp


And this is what I get when inputting tail -f /var/log/auth.log:
Code:
root@SFTPJail:/usr/home # cd
root@SFTPJail:~ # tail -f /var/log/auth.log
Mar 16 21:49:01 SFTPJail sshd[5811]: error: maximum authentication attempts exceeded for root from 192.168.1.130 port 57130 ssh2 [preauth]
Mar 16 21:49:01 SFTPJail sshd[5811]: Disconnecting authenticating user root 192.168.1.130 port 57130: Too many authentication failures [preauth]
Mar 16 21:49:08 SFTPJail sshd[5826]: Connection closed by authenticating user <user> 192.168.1.130 port 57133 [preauth]
Mar 16 21:51:29 SFTPJail sshd[5853]: error: PAM: Authentication error for mike from hp91b970.localdomain
Mar 16 21:51:32 SFTPJail sshd[5853]: Connection closed by authenticating user <user> 192.168.1.130 port 57171 [preauth]
Mar 16 22:13:29 SFTPJail sshd[6092]: Connection closed by authenticating user <user> 192.168.1.130 port 57569 [preauth]
...


I have a feeling that something may be screwy with my SSH keys. I added a .ssh/authorized_keys file and pasted the public ed25519 key, but it still refuses.

If anyone can help with this, that would be greatly appreciated. If there is a better way to connect remotely to my TrueNAS system for data storage purposes, I am all ears. Thanks in advance.

I should also add that I have been able to get SFTP working by pasting my generated public key into TrueNAS gui.
 
Top