<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=SFTP</id>
	<title>SFTP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=SFTP"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=SFTP&amp;action=history"/>
	<updated>2026-04-30T05:50:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=SFTP&amp;diff=214&amp;oldid=prev</id>
		<title>Kenneth: /* chroot SFTP */</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=SFTP&amp;diff=214&amp;oldid=prev"/>
		<updated>2014-06-23T15:04:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;chroot SFTP&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== SFTP Client ==&lt;br /&gt;
&lt;br /&gt;
SFTP server example:&lt;br /&gt;
 sftp user@server&lt;br /&gt;
&lt;br /&gt;
VMware SFTP server example:&lt;br /&gt;
 sftp -o Port=443 user@sftp2.engx.vmware.com&lt;br /&gt;
&lt;br /&gt;
Batch mode:&lt;br /&gt;
 # a batchfile of ‘-’ may be used to indicate standard input&lt;br /&gt;
 sftp -b batchfile user@server&lt;br /&gt;
&lt;br /&gt;
=== Password Solution ===&lt;br /&gt;
&lt;br /&gt;
Password Solution: [http://stackoverflow.com/questions/5386482/how-to-run-the-sftp-command-with-a-password-from-bash-script]&lt;br /&gt;
&lt;br /&gt;
You have few options other than using public key authentication:&lt;br /&gt;
&lt;br /&gt;
# Use keychain&lt;br /&gt;
# Use sshpass (less secured but probably that meets your requirement)&lt;br /&gt;
# Use expect (least secured and more coding needed)&lt;br /&gt;
&lt;br /&gt;
If you decide to give sshpass a chance here is a working script snippet to do so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SSHPASS=your-password-here&lt;br /&gt;
sshpass -e sftp -oBatchMode=no -b - sftp-user@remote-host &amp;lt;&amp;lt; !&lt;br /&gt;
   cd incoming&lt;br /&gt;
   put your-log-file.log&lt;br /&gt;
   bye&lt;br /&gt;
!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SFTP Server ==&lt;br /&gt;
&lt;br /&gt;
To provide SFTP access to linux accounts only (no shell access) change user&amp;#039;s shell to:&lt;br /&gt;
 test:x:501:50::/ftp:/usr/libexec/openssh/sftp-server&lt;br /&gt;
&lt;br /&gt;
RedHat:&lt;br /&gt;
 /usr/libexec/openssh/sftp-server&lt;br /&gt;
&lt;br /&gt;
Ubuntu:&lt;br /&gt;
 /usr/lib/openssh/sftp-server&lt;br /&gt;
&lt;br /&gt;
=== chroot SFTP ===&lt;br /&gt;
&lt;br /&gt;
/etc/passwd:&lt;br /&gt;
  testuser:x:501:501:,,,:/:/sbin/nologin&lt;br /&gt;
&lt;br /&gt;
Create group:&lt;br /&gt;
 groupadd sftpusers&lt;br /&gt;
&lt;br /&gt;
/etc/ssh/sshd_config:&lt;br /&gt;
 #Subsystem	sftp	/usr/lib/misc/sftp-server&lt;br /&gt;
 Subsystem   sftp    internal-sftp&lt;br /&gt;
&lt;br /&gt;
 # for group with one chroot (my favorite)&lt;br /&gt;
 Match Group sftpusers&lt;br /&gt;
   ChrootDirectory /data/chroot&lt;br /&gt;
   ForceCommand internal-sftp&lt;br /&gt;
&lt;br /&gt;
 # for group (alternative method)&lt;br /&gt;
 Match Group sftpusers&lt;br /&gt;
   ChrootDirectory /home/%u&lt;br /&gt;
   ForceCommand internal-sftp&lt;br /&gt;
   AllowTcpForwarding no&lt;br /&gt;
   X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
 # for user (alternative method)&lt;br /&gt;
 Match User [USER]&lt;br /&gt;
   ChrootDirectory /home/%u&lt;br /&gt;
   ForceCommand internal-sftp&lt;br /&gt;
&lt;br /&gt;
 # if wanting ssh keys to work:&lt;br /&gt;
 #AuthorizedKeysFile      %h/.ssh/authorized_keys&lt;br /&gt;
 AuthorizedKeysFile      .ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
Force umask on ssh, add to /etc/pam.d/sshd: [http://serverfault.com/questions/228396/how-to-setup-sshs-umask-for-all-type-of-connections]&lt;br /&gt;
 session    optional     pam_umask.so umask=2002&lt;br /&gt;
&lt;br /&gt;
Restart SSH:&lt;br /&gt;
 service sshd restart  # RHEL&lt;br /&gt;
 service ssh restart  # Debian&lt;br /&gt;
&lt;br /&gt;
Set root folder permissions (required for chroot)&lt;br /&gt;
 # To avoid this error: &amp;quot;fatal: bad ownership or modes for chroot directory&amp;quot;&lt;br /&gt;
 # chown root.root /home/[USER]&lt;br /&gt;
 # chmod 755 /home/[USER]&lt;br /&gt;
 chown root.root /data/chroot&lt;br /&gt;
 chmod 755 /data/chroot&lt;br /&gt;
&lt;br /&gt;
Create a pub directory:&lt;br /&gt;
 mkdir /data/chroot/pub&lt;br /&gt;
 chmod 2775 /data/chroot/pub&lt;br /&gt;
 chown nobody.sftpusers /data/chroot/pub&lt;br /&gt;
 # chown nobody.nogroup /data/chroot/pub  # match samba&lt;br /&gt;
&lt;br /&gt;
Create user:&lt;br /&gt;
 adduser [USER]&lt;br /&gt;
&lt;br /&gt;
Set user&amp;#039;s home path to &amp;#039;/&amp;#039; and disable shell login:&lt;br /&gt;
 usermod -d / [USER]&lt;br /&gt;
 usermod -s /sbin/nologin [USER]&lt;br /&gt;
 &lt;br /&gt;
Add user to the sftpusers group:&lt;br /&gt;
 #usermod -a -G sftpusers,nogroup [USER]&lt;br /&gt;
 usermod -a -G sftpusers [USER]&lt;br /&gt;
 usermod -a -G nogroup [USER]  # match samba&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* SFTP Server - Gentoo Linux Wiki - http://en.gentoo-wiki.com/wiki/SFTP_Server&lt;br /&gt;
* How to setup ssh&amp;#039;s umask for all type of connections - Server Fault - http://serverfault.com/questions/228396/how-to-setup-sshs-umask-for-all-type-of-connections&lt;br /&gt;
&lt;br /&gt;
== keywords ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>