it's a bit unclear what protocol you are planning to use. The subject is about SFTP and, in question text you are talking about FTP and GPG.
FTP, SFTP, GPG
FTP - plain, old file transfer protocol. Unencrypted password is sent over the network
FTP/SSL - plain, old file transfer protocol sent over the TLS/SSL channel. Often called FTPS. Relation betewwn FTP and FTPS is the same as between HTTP and HTTPS.
SFTP - SSH File Transfer Protocol. Completely unrelated to FTP. Different protocol and is run over the SSH communication channel.
GPG is GNU implementation of OpenPGP cryptographic software. It can be used for encryption of files and emails. I'm not aware of any way how to use GPG keys for SFTP authentication.
SFTP, FTP, FTP/SSL are fully supported by Rebex components. We don't have any component supporting GPG yet.
For more info about SFTP, FTP and FTPS see http://www.rebex.net/kb/secure-ftp.aspx
For more info about GPG see http://en.wikipedia.org/wiki/GNU_Privacy_Guard
Storing public/private keys
1) Storing keys on server:
This varies from server to server. Check your FTP or SFTP server documentation or consult with it's admin for details.
2) Generating keys and key storage on client
Following articles will help you to implement it in your code: