SSH Public Key Manager

Dear all,

I have added a Passenger application called SSH Public Key Manager to Appverse:

Open OnDemand provides a very convenient web interface, but many users also use SSH and command-line tools in parallel.

This application is a simple tool that allows users to register SSH public keys through Open OnDemand. I originally developed it for my organization, but I thought it might also be useful to others in the community.

Many sites seem to develop their own SSH key management tools in separate user portals whenever they deploy a new cluster. Although these applications are relatively small, repeatedly developing similar functionality seems inefficient.

The application verifies that submitted keys are SSH public keys, helping prevent users from accidentally uploading private keys. It also allows users to register multiple public keys.

Please note that this application supports only SSH configurations that use ~/.ssh/authorized_keys for public key authentication. Other public key storage mechanisms, such as LDAP, are not supported.

I also noticed that a similar topic is being discussed here:

https://discourse.openondemand.org/t/ssh-key-management/

It is a simple application, but I hope it will be useful to other Open OnDemand sites.

4 Likes

This is fantastic, Nakao-san. Thank you so much for building this and sharing it with the Appverse!

1 Like

Thank you for sharing this!

One issue I noticed in setting this up in the dashboard dev sandbox is the Sinatra host protection will block access and return a ‘Host not permitted’ 403 when attempting to launch it. Adding the host authorization permitted hosts line to the app.rb class resolved it for me.

class App < Sinatra::Base
  set :host_authorization, permitted_hosts: ["myoodhost.domain.edu"]
...

The sandbox doesn’t seem to like the Gemfiles being located in the misc directory but you metioned that in the Readme.

This would also be a really interesting candidate for converting to a dashboard plugin, so that it looked more native and could utilize the dashboard code base.

1 Like

@hansen-m Thanks for the suggestion - I’ve updated the code. The fix is in v1.1.0.