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.
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:
(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!
(tmux with Angular, top, and Vim)
And of course, like everything at Virtyx, it works great on Windows!
(Powershell, but without the blue)
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.
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
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
Some of our customers use Virtyx for this feature more than any other - the easy
ability to access their hosts!
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
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
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
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
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.