Cross Platform SSH Client

Background:

SSH clients were used extensively in many of our co-op assignments. Often times, we would need to connect to several different remote computers at a time. While using the standard SSH client for Windows, Putty, we noticed several shortcomings and areas for improvement. Putty does not have any way to have multiple active sessions or connect to multiple computers at one time. This resulted in having multiple instances of Putty running at the same time or switching between servers as needed. This is where we noticed another problem. Every time you connect to a computer, you must supply your user name and password. It would be much easier if Putty could store your user name and password, much like it stores connection information. There exist other SSH clients available that run on Windows, however each one of them has different shortcomings.

Problem Statement:

There are very few SSH clients that are cross-platform, have the ability to simultaneously connect to multiple computers, and store connection and user information in such a way that creates an intuitive user experience. While these abilities may be found individually in some SSH clients, we have yet to find a client that has all of them.

Team Members:

Jeremy Combscombs.jeremy@gmail.com
Paul Thomasthomaspu@gmail.com

email all team members

Faculty Advisor:

Dr. Dieter Schmidt

Goal:

Provide a feature rich alternative to the currently available SSH clients.

Subgoals:

  1. Work on many different operating systems including Linux, Windows and UNIX.
  2. Connect to multiple servers at the same time through a tabbed user interface.
  3. Store connection settings and groups of connections as presets that the user can open at any time.
  4. Incorporate an address bar so that it will display the current working directory’s path, allow the user to move to different paths or easily select a sub-path to navigate to.
  5. Include a remote file browser.
  6. Support dragging and dropping files.
  7. Support multiple user profiles that store connection and connection group details.

Helpful Skills:

  • Knowledge of Windows, Linux and Unix
  • C++ programming, cross-platform programming
  • SSH/SFTP/SCP protocols
  • Qt4 Toolkit
  • UI Design
  • Network systems administration
  • Security/Cryptography
  • XML