I have followed a few examples of how to do this, all of them end up with modifying sshd_config
to
Subsystem sftp internal-sftp
Match User chubbyninja
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
When I do this, I then sshd -t
to make sure there are no errors then service sshd restart
once it's restarted, I try to SFTP (with filezilla) but I keep getting
Response: fzSftp started
Command: open "[email protected]" 22
Command: Pass: ********************
Error: Network error: Software caused connection abort
Error: Could not connect to server
If i revert the config back to its original state, i can SFTP fine, but then i can browse any directory. Where I need users only in their home directory
My default config has this line in it:
Subsystem sftp /usr/lib/openssh/sftp-server
Which is what i'm replacing with the above details.
I only have access to this machine over ssh, although i do have root access.
UPDATE After following sam_pan_mariusz's advice it appears to get further, but now I get
Response: fzSftp started
Command: open "[email protected]" 22
Error: Network error: Connection refused
Error: Could not connect to server
UPDATE 2
I have also followed Froggiz's advice and changed my config to this:
Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE
Match Group chubbyninja
ChrootDirectory /home/chubbyninja
ForceCommand internal-sftp -u 0007
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
but I get the original Software cased connection abort
I monitor /var/syslog
but nothing shows up to indicate why there's this error
UPDATE 3 - Added sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication 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 ChallengeResponseAuthentication to 'no'.
UsePAM yes
Match Group chubbyninja
ChrootDirectory /home/chubbyninja
AllowTCPForwarding no
X11Forwarding no
GatewayPorts no
ForceCommand internal-sftp -u 0007
I don't really understand the "replacing" part in the question, but... when chroot-ing in SSH, ForceCommand should refer to the internal subsystem name. In your case, the whole line should read:
ForceCommand sftp
.If you want to use executable path in Chroot, you'll have to prepare proper chroot directory (containing libraries that the executable links to, configs, etc.).
Relevant lines from my working config:
this is how i set my sftp for specific user
1] create a user
2] edit /etc/ssh/sshd_config
3] set rights for the user
4] restart ssh
replace {USER} by your user and {FOLDER} by your folder and it should works ! ;)
can you put your full ssh config ?