Building and Using wolfSSH SFTP
Building wolfSSH SFTP
It is assumed that wolfSSL has already been built to be used with wolfSSH. To see building instructions for wolfSSL visit Chapter 2.
To build wolfSSH with support for SFTP use --enable-sftp, in the case of building with autotools, or define the macro WOLFSSH_SFTP if building without autotools. An example of this would be:
./configure --enable-sftp && make
By default the internal buffer size for handling reads and writes for get and put commands is set to 1024 bytes. This value can be overwritten in the case that the application needs to consume less resources or in the case that a larger buffer is desired. To override the default size define the macro
WOLFSSH_MAX_SFTP_RW at compile time. An example of setting it would be as follows:
Using wolfSSH SFTP Apps
A SFTP server and client application are bundled with wolfSSH. Both applications get built by autotools when building the wolfSSH library with SFTP support. The server application is located in examples/echoserver/ and is called echoserver. The client application is located in wolfsftp/client/ and is called wolfsftp.
An example of starting up a server that would handle incoming SFTP client connections would be as follow:
Where the command is being ran from the root wolfSSH directory. This starts up a server that is able to handle both SSH and SFTP connections.
Starting the client with specific username:
$ ./wolfsftp/client/wolfsftp -u <username>
The default “username:password” to run the test is either: “jack:fetchapail” or “jill:upthehill”. The default port is 22222.
A full list of supported commands can be seen with typeing "help" after a connection.
wolfSSH sftp> help
cd <string> change directory
chmod <mode> <path> change mode
get <remote file> <local file> pulls file(s) from server
ls list current directory
mkdir <dir name> creates new directory on server
put <local file> <remote file> push file(s) to server
pwd list current path
rename <old> <new> renames remote file
reget <remote file> <local file> resume pulling file
reput <remote file> <local file> resume pushing file
<crtl + c> interrupt get/put cmd
An example of connecting to another system would be
src/wolfssh$ ./examples/sftpclient/wolfsftp -p 22 -u user -h 192.168.1.111