Set Up Command Line Interface (CLI) using PuTTY

After installing your Linux OS on your unmanaged virtual private server, say, with Linode, Slicehost or others, you may be wondering, “How do I access it, securely & easily?!”
If you’re using Windows locally, here’s how, in under 5 minutes.
Not only that. Using PuTTY and OpenSSH, we’ll configure an encrypted connection that you can access using authentication keys, securely simplifying login to a double-click, password-free process.
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
.. from blank box to cute-as server ..
with this easy-to-follow copy/paste guide.
22+ parts with video, here’s the index.
The Complete VPS Security Process
So that you know where we’re going with this important foundation work, here’s the order of play:-
- In this tutorial, we’ll set up the command line interface (CLI). In the next guide Create a Linux User & Set Permissions we’ll setup a Linux user with permissions
- In Encrypt Data with OpenSSH & Auto-Login with PuTTY we can create encrypted, point-and-click access
- We’ll complete this modular process in Harden the Secure Shell (SSH) & Create a Firewall, adding a rock solid layer of security using SSH and iptables (the firewall).
If you’re using a local Linux Ubuntu machine, you shouldn’t be here at all, interloper! Go to Setup openSSH for Linux-to-Linux instead and carry on from there.
Video: Setup a Simple PuTTY Configuration
Watch the, er, guvideo for a better idea of how to do this.
Install PuTTY, the CLI Software (it’s free!)
What is it, some kind of window sealant? Hmmn, not so far from the truth! PuTTY is an OpenSSH client or, put simply, a way of communicating securely, creating an impenetrable tunnel from your local Windows PC to your remote Linux server. It encrypts whatever you do, so passwords and the like are safe. It can also be used to speed up your local to remote logon procedure, as we’ll see later on in the series.
Goto PuTTY’s website, have a read, and then head to the download page.
There are a few PuTTY modules, but the ones we’ll be using for this setup are:-
- PuTTY for the command line interface/terminal/shell/console/whatever else it’s called
- Pageant the secure (SSH) authentication tool that uses a keyset to unlock a connection
- PuTTYgen the ‘authentication keys’ generator
Hold on! What’s SSH? Aah, yes. It stands for Secure Shell. It’s a secure, encrypting network protocol, so that when you administer your VPS from your local computer, no third party can see what you’re doing. We want to use it for two things in this series:-
- to provide a secure connection via the command line interface
- to shore up an otherwise unencrypted FTP connection, making it SSH FTP, or Secure FTP or SFTP for short. We’ll set that up in FileZilla for Secure FTP (SFTP)
To keep everything simple, download the Windows installer which includes all required modules. As of writing, here it is.
Now, install PuTTY.
Locate Your New VPS IP Address
For example, with a Linode, but similar for Slicehost and other unmanaged VPS hosts, you’d …
- go to your member login page
- login
- click on your new Linode to enter the Dashboard
- click on Network and…
- in there, there’ll be a number sequenced like 93.113.135.123, and labelled, yup, IP Address. Copy that number.
How to Configure PuTTY
From your Windows desktop, goto Start > All Programs > PuTTY > PuTTY, and click it open.
Where the newly opened box asks for Host Name (or IP Address), paste your IP number.
Next to it, the Port will probably say 22, which is what we want for now. Just ensure it does.
The Connection type should be set to SSH.
Click Open.
Up pops a PuTTY Security Alert. That’s standard. Click Yes.
Now at the CLI (the terminal) for the first time, as prompted, login as root and enter the password you entered when you set up your Linux distribution.
You’re in!
For the record, when you want to logout, it’s bad practise to click the close (X) button at the top right of the CLI. Enter “logout” or “exit” instead.
Jolly good, hats away!
Queued Up
As I touched on above, now we’ve got our PuTTY CLI set up, we’ll add ourselves as a Linux user, then secure the local-to-remote connection with easy shortcut access.
Then, for those of you wanting the complete Linux server solution, we’ll add some security measures before crack on with installing the big guns like PHP5, MySQL and that damn tasty Nginx web server, which knocks Apache into a cocked hat.
After a brief period of dribbling over our hot-to-trot multi-site/blog solution, we’ll consider email, secure ftp, this, that, other. Er, think I need a cold shower. You’d best just read the index…
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
with this easy-to-follow copy/paste guide.
“My local PC runs Windows” Show me for Linux
“My local PC runs Linux” Show me for Windows
22+ parts with video, here’s the index ..
-
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Introducing vpsBible’s how-to guide for setting up a super-charged unmanaged VPS featuring Ubuntu and Nginx.
-
VPS (Virtual Private Server) vs Shared vs Dedicated
Before getting stuck in, let’s compare the web host types in detail and weigh up the differences between managed & unmanaged VPS.
-
Set Up a VPS Linux Distribution
Opening a VPS hosting account, we’ll choose, configure & launch a Linux server ‘distribution’.
-
Set Up Command Line Interface (CLI) using PuTTY
Now we’ve got a server to play with, we’ll connect to it, using the ’ssh’ protocol for a super-secure link.
-
Create a Linux User & Set Permissions
Initially you’ve logged into your remote Linux machine as ‘root’. We’ll add you as a user now, with root or SuperUser permissions.
-
Encrypt Data with OpenSSH & Auto-Login with PuTTY
Now we can use ‘authentication keys’ to shore up our connection while simplifying login to an automated, password-free yet secure process.
-
Harden the Secure Shell (SSH) & Create a Firewall
The final security step: galvanizing the OpenSSH protocol and setting up an ‘iptables’ firewall. Now the server is rock ruddy solid.
-
Edit bashrc for User-Friendly Linux, plus System Updates
We use the terminal a whole lot so let’s cut ourselves a break and create some command shortcuts, then update the server.
-
PHP5, MySQL and Xcache (for Platforms like WordPress)
We have our foundation, let’s lay some bricks: PHP for server-side web applications, Xcache to speed things up & MySQL for databases.
-
Add a Domain Zone to Your VPS
To make your server aware of yourDomain.com you’ll need a few ‘DNS’ records. Damn this is simple I’m practically asleep!
-
Prepare Linux Server for Email with Postfix
In order to send and receive email from our web applications we’ll install some software and tweak the ‘RDNS’ record.
-
Nginx (better than Apache) Web Server
OK I woke up .. let’s install this supersonic web server, tweaking its file structure & adding default configuration files.
-
Setup FileZilla for Secure FTP (SFTP)
There’s FTP, and then there’s ‘Secure FTP’. We’ll set up FileZilla using SFTP – and those authentication keys – for secure file transfers.
-
Serve Multiple Sites & Blogs with Virtual Hosts
We want a website folder structure, some permissions, some site-specific configuration files and, hey, we’ll hook up ‘FastCGI’.
-
Adding Sub-Domains with Nginx
Need a sub-domain? Here’s how to add www.sub.domain.com with an ‘A record’ and a configuration file. (I’ll allow you to skip this bit.)
-
Integrate A CMS Like WordPress, WP MU, Drupal etc
For those of you wanting to use a specific content framework, such as a CMS, blogging or forum software, pop in here and we’ll sort that out.
-
Configure phpMyAdmin for Nginx to Maintain MySQL
Rather than have to crunch databases via the command line, we can make life easier by adding this splendid tool to manage them.
-
Google Apps for Domain-Specific Email
GA’s free Standard Edition for catchall webmail – POP-ping or IMAP-ped to your desktop client – saves precious server resources for your webs.
-
Moving Day! How to Move Your Blog or Site
Nearly there. Here’s the web site or blog migration guide, relocating to your VPS with minimal or no downtime.
-
Appendix 1a: Nginx Control Panel
You’re migrating shared-to-VPS and want a GUI like cPanel? No you don’t, not after you read this! What’s more, you don’t need one either.
-
Appendix 1b: Nginx Control Panel Workarounds
For every control panel module there’s an equivalent terminal command. They’re all linked from here so, hey, no excuses!
-
Appendix 2: Add Web Sites Nginx Cheatsheet
Once you’ve set up your first site, adding more gets easier. Especially when you can refer to this. (Let’s face it, I’m just too good to you.)
Got a Question? Want to Comment?
This site has no comments system. We've got a better system!
Please use the link at the top of the post and goto this topic's forum thread:-
- to help build community
- for a superior knowledge base
- to keep info in one place, not diluted between forum & comments.
For those posts ported from Guvnr.com (pre-Feb/2010), archive comments remain.
Handy info from these comments is in the process of being ported to the forum and attributed to the original author.
If you think this idea sucks, let me know.
Thank you.




















Leon September 8th, 2009 at 11:59 am
REALLY GREAT GUIDE, GUV! Will have to do some more reading me thinks….
the_guv September 16th, 2009 at 8:34 pm
@Leon .. big cheers .. you know it’s worth it.
Install/Upgrade WORDPRESS with SUBVERSION - VPS Bible #15 - GUVNR September 22nd, 2009 at 2:01 pm
[...] Set Up the Command Line Interface (CLI) using PuTTY * [...]
ADD a Linux USER with Visudo & Set Sudo Permissions: VPS BIBLE - vpsBible February 8th, 2010 at 3:18 pm
[...] up the terminal, logging into your VPS as we learned to do in Set Up Command Line Interface (CLI) using PuTTY or, if you’re running Linux locally, as we did in Setup openSSH for [...]