Skip to Content

From the Virtyx Blog

Virtyx Feature Focus: Shell

By Ethan Mick • September 20, 2018

Virtyx offers unparalleled monitoring and data correlation to find root issues. Monitoring software usually only surfaces a problem, often not even the root problem, and it’s up to the ops team to find the root cause and then fix it.

Today, I want to talk about the Virtyx Shell, one of our most powerful tools to actually fix issues.

Virtyx Shell

The Virtyx Shell is a fully functional, powerful, cloud based terminal that gives command line access to your hosts with the same permissions the Agent runs as. We’ve worked hard to make the terminal feel as natural as a native client would. And we think we’ve succeeded:

Shell

(ZSH is the best shell!)

The shell captures all input from your keyboard and directly sends it to the agent. The Agent pipes the response back to your browser, allowing perfect communication. This allows you to do some amazing things in the browser, again, just like you would in your own shell!

Lots Going On

(tmux with Angular, top, and Vim)

And of course, like everything at Virtyx, it works great on Windows!

Powershell

(Powershell, but without the blue)

Sessions

Another benefit of using the Virtyx Shell is that your actions are recorded in a session. This session is saved on the console so teammates can see it, and scripts can be created from it. We’ll cover sessions in another blog post.

Use Cases

We’ve seen our customers do some amazing things with the Virtyx Shell and want to highlight a few of them.

Working with Firewalls

Whether your job or a cafe has a firewall up, it can stop you from getting your work done or accessing your servers. Port 22 is often blocked on networks, which can make it challenging to SSH into your server. The Virtyx Shell allows you to easily bypass these restrictions. Because you access the shell through your web browser, the secure connection goes outbound on port 443, which should always be open. This allows you to check in on your agents even if conventional ports are blocked.

Getting through NAT’s

Often a server or computer you want to access is through a network address translation (NAT), such as:

  • Accessing your home desktop from a coffee shop
  • Accessing a server that’s in a VPC

In these cases, getting access to it can be tricky. You might need to setup port forwarding on a router, or SSH through a bastion server. The Virtyx Shell simplifies this entire process by letting you connect directly through the cloud to the Agent.

Easy Access on the Go

You might need to access a host when you are away from your normal workstation. You could be on a public computer, or borrowing a friends laptop and need to get access. Without proper SSH keys this might be impossible in those situations. The Virtyx Shell lets you have a backup plan in case you need to get access in those cases. Login to Virtyx and in one click you have the access you otherwise couldn’t get.

Some of our customers use Virtyx for this feature more than any other - the easy ability to access their hosts!

Architecture

The Virtyx Shell is only possible because of our bi-directional agent communication. Instead of only sending information up to our platform, the agent listens for commands from our platforms as well. One of the commands it accepts is to open up a TTY on the host and pipe the information up to the cloud [security].

Our Agent is written in Go, but there currently isn’t a good TTY/PTY package for Go. We looked at several, but didn’t find one that supported both Unix systems and Windows.

Virtyx ❤️Windows. We work hard to have all features work cross platform.

However, Node happens to have a fantastic package written by Microsoft called node-pty, which works cross platform perfectly.

Our Agent’s plugin architecture allows us to run any binary plugins, not only Go libraries. Because of this, we were able to build the Node package into a binary, bundling the Node.js runtime and all. The resulting plugin can be executed by our Agent, which creates the pseudo terminal. The plugin opens up a secure TCP connection to our realtime servers, which connects the browser to the Agent.

We also could not have done this without the fantastic Xterm library.

Security and Future

The power of the shell is not something we take lightly. We take security seriously and want our customers to know they are secure when they connect through the Virtyx Cloud. Virtyx allows you to configure roles to control who can access the shell on various hosts.

Moving forward, we want to help our users do even more in the shell. We’re looking forward to adding contextual information for your current tasks, and suggestions to fix ongoing problems, all within Virtyx.


Come join our team - we're hiring!

Get Started for Free
Read More

By Ben Burwell • October 22, 2018

By Ben Burwell • October 19, 2018

By Jim Maniscalco • September 27, 2018

By Jim Maniscalco • September 14, 2018

By Ben Burwell • September 13, 2018

Start using Virtyx today.

If you manage computers or servers, Virtyx can make your life easier.
Get Started for Free