CodeAnywhere.com initially caused me great alarm as it is essentially a proxy service for any SSH enabled server. In fact, I posted about it at the time. (Those in enterprise security understand why I would post such a thing.) However, I have come to some realizations that make CodeAnywhere.com an excellent resource for budding system administrators and developers. Here’s why.
Unlike REPL.it, which is great for beginners, CodeAnywhere.com provides a single free container. It is a 100% legitimate free, cloud-enabled Ubuntu server. While I may hate the limitation of themes, this is the only free cloud command line of which I am currently aware. That is substantial. Much more than the command line can be learned through experimentation and actual use can occur including creating your own SSH keys, installing packages, and even writing your own custom bash configurations synchronized to a Git repo.
Web Access to Your Own Educational Server
One of the amazing things about CodeAnywhere.com is that anyone with an account can create a public/private key pair for use with SSH remote login to enable rock-solid secure access to a third party, multi-user educational server (say on Digital Ocean). This allows all kinds of common configurations and challenges to be setup in a way that is easily accessible to anyone on the Internet in a very secure way. Using password-based logins to public Internet-facing servers is a security issue waiting to happen, but by forcing SSH pubkey-only logins that risk is practically eliminated. Someone would have to hack the CodeAnywhere.com account of the user and then know enough to SSH from that account into the system. With added passphrase on the pubkeys that possibility is all but eliminated all together. In short, this makes cloud-based access to a centralized education server very secure and very doable—especially when more and more schools and districts are disabling everything from terminal access and Chrome extensions to even “view source” in Chrome. CodeAnywhere.com is largely accepted by schools (because it is just a web site) and therefore provides a reliable, universal way to access your centralized, multi-user educational Linux server.
Unused Accounts are Deleted
At first I found this very annoying. CodeAnywhere.com will delete—with little warning—your single container instance that you so painstakingly setup. This is not a big deal if you have been using it indirectly for access to a centralized educational server, but it is a huge deal if the student using it is not frequently backing up profiles and syncing configuration to something off site (such as a GitHub repo).
The good news is that this means students who fade away or become inactive will automatically be denied access to the central education server simply by way of the fact that their container on CodeAnywhere.com was deleted containing the only public key added to the
authorized_keys file on the target educational server effectively cutting off their access and ensuring that old accounts cannot be attacked for access.
A Suggested Progression
For those considering educational technology options for all their students that address the vast span of technical skills in this area I suggest the following:
- REPL.it to create a Fundamentals of Programming working notebook of concepts and small exercises.
- Have each student create a CodeAnywhere.com account and help them run
ssh-keygento generate a pubkey that can be added to your centralized education server (perhaps hosted on DigitalOcean).
- Show students how to put the public/private key pair their own home computers and laptops as well or have them create a new pair and add the pubkey from that as well to the central educational server for them into their home
- Encourage students to get their own computers and work mostly from them instead as they advance enough to manage their own
bashrcfiles and understand their implications.
- Encourage students to create their own hardware and cloud servers to which they can connect from laptops, desktops, as well as CodeAnywhere.com during their advanced project work.
At the end of that progression students will solidly understand the Linux operating system and the many facets of secure remote server setup.