Sal Aguilar's Adventures in IT

computers are easier to deal with than people

Introduction to WordPress Security by Sucuri — February 14, 2018

Introduction to WordPress Security by Sucuri


Security on websites and mostly on WordPress which is on more than 29% of the entire internet, its crucial, preventive security is 10 times cheaper than proactive security.

Below is an amazing and easy to follow infographic about WordPress Security by my favorite Website Security provider: Sucuri

See the full infographic here: https://sucuri.net/infographics/intro-to-wordpress-security

 

Advertisements
Understanding HTTP Headers — January 29, 2018

Understanding HTTP Headers


If you do not know what HTTP Headers are, let me run a quick introduction, and if you do, then it would be just a refreshment.

What is HTTP anyways?

HTTP stands for Hyper Text Transfer Protocol, which is the protocol that we use on our browsers and to visit web pages and similar services. Since HTTP is part of the TCP, stack than it means that the flow works just like PING PONG. Below a simple graphic to explain it:
howthewebworks
More about HTTP

HTTP is a protocol and it has several methods. The most used methods are:

GET

The HTTP GET method is used to request a specific URL or file, some examples below:

HTTP GET http://domain.com/file.txt 

HTTP GET domain.com/contact-form/

HTTP GET https://www.domain.com/secure-file.html

This is basically what happens when you put a domain on the browser bar and click enter, or when you click on a link within a website. Your browser then generates an HTTP GET request to the server asking for that URL.

Its basically a request from the visitor to a server asking the server to send information.

POST

The HTTP POST method is used on the opposite way. The POST is used when the visitor sends information to the server to process. Some examples can be:

  • Filling out a contact form and clicking SEND. The POST method that the visitor sends, it will contain all the information of the contact form, and the server will receive the info and process it accordingly.
  • Filling out any form.
  • Adding products to shopping cart.
  • Doing a checkout process on any e-commerce website.
HTTP POST www.domain.com/contact-form/?filled=yes&name=John%20Doe&email=test@test.com&phone=1234567&comments=no

We do not usually see the POST contents on the browsers unless you use your browser’s Developer Tools to check on what is happening on the background.

Now that we’ve covered the basics, let’s talk about HTTP HEADERS!

What are the HTTP HEADERS?

HTTP Headers is all the extra values that are added to the HTTP GET & POST requests. Below a quick example:

First we do the request

HTTP GET salrocks.com

Then the server answered this:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sat, 27 Jan 2018 01:08:18 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://salrocks.com/

What does that mean?

Let’s break it down shall we?

HTTP/1.1 301 Moved Permanently

The HTTP 301, is a what is called a permanent redirect. This will tell your browser to load a different page, it will get the value from the LOCATION header.

Server: nginx

The SERVER header, it will tell you what software is the web server using to serve websites. On this case the web server used is NGINX. Other values could be Apache, LiteSpeed, ISS, etc.

Date: Sat, 27 Jan 2018 01:08:18 GMT

The DATE header provides a timestamp of the time the request was served.

Content-Type: text/html

The CONTENT header will tell you what type of media file is, if its a text, media file or binary file. It will depend on the MIME TYPES setup on the server.

Content-Length: 178

This one, the CONTENT-LENGTH header will simply tell you the size of the file requested.

Location: https://salrocks.com/

As discussed on the HTTP 301 header, the Location will tell the server what URL it should load instead of the http://salrocks.com that was requested initially.

Ok so that’s simple right? Let’s move on. Let’s now try to load the https://salrocks.com to see what happens. Let’s go!

HTTP GET https://salrocks.com

And now the server answer was this:

HTTP/2 200
server: nginx
date: Sat, 27 Jan 2018 00:18:39 GMT
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=86400
vary: Accept-Encoding
vary: Cookie
link: <https://wp.me/5zKS6>; rel=shortlink

Let’s break the answer now, since there are new values and new headers there. We are just getting started.

content-type: text/html; charset=UTF-8

As you can see the CONTENT-TYPE header now included a charset setting besides the MIME TYPE.

strict-transport-security: max-age=86400

The STRICT-TRANSPORT-SECURITY header is related to HSTS and the policy that tells your browser how long to cache the request.

vary: Accept-Encoding
vary: Cookie

The VARY header tells the other proxies if they should cache a similar request or if they should request a new one..

link: <https://wp.me/5zKS6>; rel=shortlink

The LINK header provides a relationship of the present request to the link provided on this header and the relationship. On this case it tells you that https://wp.me/5zKS6 is a SHORTLINK to https://salrocks.com 

How do you use HTTP HEADERS to troubleshoot issues?

Checking the HTTP Headers of your website it can help you solve all of the following issues:

  • Too Many Redirects.
  • Failure in forms. The POST event might have gotten a HTTP 404, 403 or 500 error.
  • SEO issues with 302 or 301 redirects.
  • Caching issues (if an URL is cached, missed or expired).
  • Media expiration status.
  • CDN cluster from which the asset is served.

Soon I will be writing about HTTP HEADERS for Sucuri, CloudFlare and Kinsta.

Stay tuned!

MacOS Improvements: Homebrew — November 13, 2017

MacOS Improvements: Homebrew


For those who have used any Linux distro like Debian or CentOS, you are pretty familiar with packet managers. But this is also for all those Mac newbies out there, basically a packet manager is:

… a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer‘s operating system in a consistent manner.

On Debian has APT and CentOS comes with YUM. Every IT Pro, SysAdmin or Dev knows how lovely packet managers are, and well since Apple never made one for MacOS, some one did and its amazing.

It’s called HOMEBREW and it brings the sweetness and ease of installing packages just like APT or YUM does on Linux.

How do you install HOMEBREW?

Open your favorite terminal app, either the one that comes with MacOS or my favorite iTerm2 and execute this command:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 And that’s it. YES, IT’S THAT SIMPLE!

Now What?

Now you should update Homebrew and you do it with this command:

brew update

And you can install any program/software. On this example I’m going to install Apache, PHP 7, MySQL:

brew install apache2 php70 mysql

This will proceed to install all the required dependencies for each of the software we are installing and that are NOT currently installed on the server.

After it is installed all software is saved the following directory:

/usr/local/Cellar

Below is a snapshot of how my HomeBrew directory is currently:

1. salvador@RipeR81-MBP: :usr:local:Cellar (zsh) 2017-11-09 21-27-20

So start experimenting with HomeBrew today, and let me know if you need a hand!

Tweet at me @RipeR81

Oh-My-ZSH on MacOS Sierra — June 22, 2017

Oh-My-ZSH on MacOS Sierra


If you are a developer, coder, sysadmin or IT Pro I assume that you have used the terminal either on your Unix, Linux, Mac o Windows. And the shell that usually comes as default is the good old faithful BASH shell, which is nice but not cool.

What is Oh-My-Zsh?

Oh-My-Zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and a other cool things.

Below are some facts about it:

  • More than 200 plugins. Enhance your productivity with plugins that integrate into git, google, youtube, sublime and much more.
  • More than 1000 contributors.  Since its Open Source, the code is available for free on GitHub and you can add your modifications, plugins and themes. Just submit your pull request!
  • More than 140. Don’t be a dull bird using the old BASH simple theme. Add colors and other functionalities by using any of the themes.

Still not convinced?

Check this screen captures:

And these are just some of the ways your terminal or console can look like. Pretty awesome right?

Now, how do I install Oh My ZSH on my Mac?

Dude, its a piece of cake. Just go to your Terminal or iTerm2

mac-terminal-1

And type:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

This will do the entire process of installing all the required pieces to make it work. Once it finishes you can go ahead and customize the themes & plugins.

Picking a different theme

As default, Oh-My-ZSH comes with the theme default which is robbyrussell. But if you want to choose a different please go to the Themes page in GitHub. Choose the one you like the most and then use your favorite text editor (nano, vim, emacs, sublimetext or even textedit) to edit the file .zshrc located on your home folder. Below are the commands to open such file on nano & vim:

nano ~/.zshrc
vim ~/.zshrc

Then you will have to locate the string:

ZSH_THEME=robbyrussell

And change it to the theme that you selected, on this case I chose the theme called Blinks, so I went ahead and edited the .zshrc file and put this string instead of the one above:

ZSH_THEME=blinks

Then save the file and exit the editor. Please note that you will NOT see an immediate change on your current session. You would have to start a new terminal session to see the new theme applied there.

Now if you are a free soul like me, then you might want to set the value to random, that way each time you open the terminal you will experience a new theme until you find the one that you love the most. To enable this awesomeness simply use this string instead of the two previous ones:

ZSH_THEME="random"

Cool? Dude you know it is cool!

So, what about plugins?

Just like Themes, enabling and disabling plugins is done thru a text editor and your file .zshrc. You will need to look for the string:

plugins=(xxxx)

Where xxxx can be anything.

Since you are on Mac, I suggest all these plugins to be enabled:

plugins=(brew rails git ruby terminalapp sublime screen rvm perms osx history github encode64)

But there are several more, just go to the Plugins page on GitHub to learn about them all.

Please note that the same rule of the themes applies here, you will need to save the file and open a new session to see the plugins enabled.

So that is all folks. Start experimenting with Oh-My-ZSH and help the creator of this awesome shell by buying some swag for you and your friends!

Comment below if I missed anything! Thanks!

Clearing CloudProxy cache via PHP — October 18, 2016

Clearing CloudProxy cache via PHP


For those who are not familiar let me explain what CloudProxy is. CloudProxy is the Web Application Firewall & Caching service from my employer, Sucuri.net. This service is setup at the DNS level and helps filtering all the HTTP requests that get to your website and speeding the performance a the same time.

Below is a simple graphic to explains how it works:

sucuri-cloudproxy-how-it-works
A brief explanation on how Sucuri’s CloudProxy works

How can I clear CloudProxy Cache?

It’s simple there are two ways:

  • Via CloudProxy‘s dashboard on Sucuri’s website
  • Using the API

Clearing the cache via the dashboard

Just follow this steps:

  1. Login to your account via https://login.sucuri.net
  2. Then go to CloudProxy (check your left menu) or simply type this: https://waf.sucuri.net on your browser address bar.
  3. Once on the CloudProxy Dashboard, click on settings and select the website you want to clear the cache for.
  4. Once there click on Performance, and then simply on the button to clear the cache. And in less than 2 minutes the cache will be trashed from all the CDN servers.

You can also check their tutorial on their Knowledge Base: CloudProxy – Clearing Cache

This is convenient when you are not making that many changes into your website. However if you are pushing changes everyday or building an webapp, then you need something easier.

Clearing the cache via PHP

I am currently building a web app with some friends and we faced the issue that after deploying each change, I needed to login to my account and clear the cache manually. This becomes tediously when you are committing changes several times a day 5 days a week. So I had to come up with a simple solution to get the job done.

That is why I turned to CloudProxy’s API, which offers me the ability to clear the cache by calling a simple string. You can see the basic code  below:

<?php
/**
 * Simple Script in PHP to clear sucuri's cloudproxy cache via php 
 * 
 * Author: Salvador Aguilar
 * Email: sal.aguilar81@gmail.com
 * Web: salrocks.com
 */
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://waf.sucuri.net/api?v2',
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => array(
        // this is the Sucuri CloudProxy API key for this website
        k => 'your-cloudproxy-api-key-goes-here',
        // this is the Sucuri CloudProxy API secret for this website
        s => 'your-cloudproxy-api-secret-goes-here',
        // this is the Sucuri CloudProxy API action for this website
        a => 'clear_cache'
    )
));
// Send the request & save response to $resp
$resp = curl_exec($curl);
echo '<pre>' . $resp . '</re>';
// Close request to clear up some resources
curl_close($curl);

https://gist.github.com/riper81/2f070c485f8172364bf4efd7a30f2b2c.js

That is the initial version of the script, if you want other features or to fork it you can get it from GitHub: https://github.com/riper81/clear_cache_cloudproxy_php 

What’s next?

Once you have the file, you simply put it on your website root and you edit with the proper values from your Sucuri account and then simply run it via a web browser or command line and you cache will be cleared.

I added this script into my deployment script so I can update from my git repo and then clear the cache from Sucuri. Making things easy for us 🙂

If you have an idea, hit me up!

How websites get hacked? And WordPress meetup Managua — June 11, 2016

How websites get hacked? And WordPress meetup Managua


On May, I had the opportunity to participate on Desarrolladores WordPress Nicaragua (You can find them facebookmeetup ) monthly meetup.

Both my business partner and co-founder of SenorCoders.com and myself gave talks. While I talked about How Websites get Hacked, Kharron talked about Developing a Mobile App using WordPress as the backend.

My presentation was based out of the work that I do each day as part of the Remediation team in Sucuri. You can find my presentation here:

 

Special thanks to:

  • Daniel Gordon & Steven Hansen from Rain for sponsoring the venue, sodas and pizzas.
  • Tom Sepper @ Site5 for sponsoring the web hosting accounts

 

 

Alternative to PayPal in Nicaragua: Costa Rica — March 10, 2016

Alternative to PayPal in Nicaragua: Costa Rica


After an overwhelming traffic to my previous post 2 Alternatives to Paypal in Nicaragua, I was asked to expand my comments on each case, so today I am bringing you more information about using Paypal in Nicaragua, and yes its thru our southern neighbor country, Costa Rica.

As many of you already know, we can receive payments but we can’t cash them out locally. So after research online and conversations with many friends, such as Hosmel Quintana, an awesome Nicaraguan Developer working on UpWork and making a living.

So let’s now get straight to the point. The how-to begins now.

How this works?

Simple, Paypal works in Costa Rica, for both making and receiving payments and cashing them out. But there is a trick, it ONLY works with Banco Nacional but you will be able to transfer your money from Paypal to your Savings Account, which is what we want access to our money!!!

What do you need?

  1. Go to Costa Rica with a valid passport.
  2. Go to any branch of Banco Nacional.
  3. Open a Savings account with your passport. Do not explicitly state that you only want it for Paypal.
  4. Be sure to get the token that they give you to access BN Internet Banking, you will need it afterwards when enabling Paypal.
  5. Once your account is activated. You would need to open a new Paypal account and provide address of Costa Rica. You can look online and even  use any address listed here. You can check out this guide for step by step guidance.
  6. Once your costa rican Paypal account is activated, you would need to link the bank account using the information of your Savings Account from Banco Nacional. Upon activation it will ask you for the token, which you will use to finish the setup.
  7. You are done!

Restrictions and warnings: its not that simple

  1. You can NOT transfer from Paypal to Banco Nacional USD999 or more. This will raise red flags and would probably be forced to legally open a business in Costa Rica pay all the according taxes.
  2. If you want to cash out USD1,000 or more you would have to legally open a company, and open a business account with them. You would have a limit of USD10,000 per transaction and USD50,000 per day. That is a LOT if you ask me. These are the requirements for the business account. 
  3. You need to use an email that was not previously activated on Paypal. Be sure to follow the proper instructions listed here.
  4. The commissions, the ugly part, are these:
    1. Banco Nacional will charge you 0.5% if its more than USD 2,200.
    2. Banco Nacional will charge you USD 11 if its less than USD 2,200.

Getting the cash: How to transfer from Paypal to Banco Nacional?

  1. Login to your BN Internet Banking with your username and password.
  2. Once inside, look for PAGOS and then select PAYPAL.
  3. On the left menu, you should see the following option: Retirar fondos de cuenta PayPal. Click there.
  4. You will then have to type the number that was generated on your Token.
  5. Banco Nacional will now list the terms and conditions, which you have to accept if you want to continue.
  6. You will then select the Paypal account to which you want to perform the transfer to.
  7. Next step is to define how much money you want to transfer.
  8. Then you will have to confirm the transaction. Be sure to review the amount.
  9. Once confirmed, the transfer takes up to 5 business days to hit your account.
  10. After 5 days you should have your money ready. Awesome!

Conclusion

Even though is not the best option, it’s an option if you want to be able to cash out your Paypal funds on any ATM. I am still not sure about the specific ATM withdrawals fee, but that is something I am working on currently. If any one has already done it, I would appreciate you share the fees so I can include them here, and give you the proper credits on this article as well.

Thanks for reading and feel free to contact me for questions or suggestions. Jokes are welcomed too!

2 Alternatives to Paypal in Nicaragua — March 2, 2016

2 Alternatives to Paypal in Nicaragua


Last year I wrote an article about how Paypal is working on Nicaragua, and its 2016 and we are still on the same place: we can get money in, but we can’t cash it out locally 😦 , we need to spend it again via Paypal, which on my particular case has come in handy when paying for servers in Digital Ocean (please use this affiliate link – thanks for using it), Domains & Hosting in Site5 (please use this affiliate link), Games on the XBOX store (I’m a HUGE batman fan).

But at the end of the day you need hard, cold cash. So below are some options you can use instead of Paypal if you work with foreign customers.

PayOneer

aaeaaqaaaaaaaam6aaaajdeymjm0mwjhlti5ngqtndc2mc1hndmzlti2ytc2mwywztkxmq

This is a very known Mastercard debit card that is used by many freelancers who work and get paid via UpWork.com and other similar sites. This is a service that provides you with a US based checking account in Bank of America that companies on the US can deposit money and it will be linked to your card. Unfortunately that only works to get deposits from business or corporate accounts.

They do offer however a credit card based service, which it was suspended a couple of years ago and it seems is working again. The service will basically send an email to your client and they will go to a page from Payoneer where they can put their credit card information and perform the payment. They can even decide who is going to pay the fee for the transaction.

In Nicaragua, you can use this card on any ATM from banks who take Mastercard, I have being told by some freelancer friends that ProCredit ATMs offer the lowest fees, followed by BANPRO and lastly BAC being the most expensive one.

Payoneer Fees

Debit Card Annual fee: USD 29.95
Deposits to US Checking account: 1% (if you get paid 500 USD, they will charge you USD 5). Maximum is USD3000 per transaction.
Credit Card payments: 3% per transaction, the only take MASTERCARD & VISA, Maximum is USD2000 per transaction.

ATM Withdrawal fee:  3.15% per transaction (some ATMs add another charge on top of this percentage)

As a conclusion, this is a very good solution if you are getting payments from different customers and your transactions are below the USD2000. My suggestion is to use it when you can and instead of cashing out, to avoid the fees, try to use it as a debit card to pay for stuff like groceries, internet, gas or entertainment!

You can use my affiliate link to ORDER YOUR CARD TODAY FOR FREE

PaypalPanamá via LAFISE

This is a solution that has been suggested to me recently and for which I am still on the process of requesting it to LAFISE, since they are a regional bank with offices in Panama, you can open a bank account in LAFISE PANAMA without ever even leaving Nicaragua. You will have to go to your nearest LAFISE branch and talk to Customer Service (servicios bancarios in Spanish) and they will provide a list of the requirements to do so. Once you have filled all the requirements they will give you the bank account information. It cost around USD 20 since you are required to get LAFISE ID, which is their security method to login plus around USD200 cash to have there to keep your account opened.

They you will need to open a new Paypal account, but open it as if you were living in Panamá. After that you will link your LAFISE PANAMA Bank account to Paypal so you can start getting payments. Since LAFISE also has offices here, the transfers between countries are free.

All normal Paypal fees apply.

 

2Checkout

2co_logoA friend of mine, who owns a business directory website, has used their service for many years now. What they basically do, is they provide a back end so your customers can login there, put the credit card information and process the payment. 2checkout would then give you the option to wire you the money to your Nicaraguan bank account.

They do ask a lot of questions and are very strict about knowing exactly who you are, so they will ask you to provide a lot of documentation, but in the end you will be able to get payments internationally, so on my humble opinion, it’s worth it.

2checkout fees

Credit Card Transactions: 3.9% + 45¢
Wire Transfer cost: USD40-65

What’s next?

There are some options I didn’t include on this list because they would need you to open legal companies in other countries or ar alternative methods of sending money to Nicaragua so I am just going to list them briefly:

  1. Open a US company or LLC on any state, file with the IRS to get EIN, open a bank account on the business name and then start using services like Stripe or Authorize.net.
  2. Open a bank account in Costa Rica, in Banco Nacional and  create a Paypal account as if you were living in Costa Rica and link it to that account.
  3. Use Western Union, Moneygram, Xoom, etc.

If you have any tips or other ways that we as Nicaraguan Freelancers and entrepreneurs can benefit from, please let me know!

DLNA on Mac: The Ultimate Guide — February 24, 2016

DLNA on Mac: The Ultimate Guide


Well folks, many of you have read my article from Streaming from Mac OS X to a Roku Streaming Device and Stream Media from Debian to XBOX One, now it comes this guide, which is basically a different way of using DLNA on your Mac OS X (El Capitan).

Requirements

  • Mac OS X El Capitan
  • Internet access
  • Brew
  • Any DLNA capable device (Android device, Roku, Windows based computer, Playstation 4, XBOX or any SmartTV. The device needs to be on the same network as your Mac OS X computer.
  • Time, and willing to geek out!!

Step 1: Install Brew

Brew is the missing package manager for Mac OS X, it’s what aptitude is for Debian, yum for Red Hat based Linux distributions (RHEL, Fedora, CentOS, etc).It makes your life really easy if you are a developer or sysadmin. Install packages just like you would do on linux. Forget about downloading sources and compiling. This is the way to roll.

  1. Open your Terminal on your Mac OS X computer.
  2. Type the following command:
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Wait for Brew to be installed. If it fails for any reason, please visit this link for further information.

Step 2: Install minidlna

On linux, we have minidlna which is a daemon used to share media contents in your network using DLNA. The daemon is now called ReadyMedia. The full description is:

ReadyMedia (formerly MiniDLNA) is server software with the aim of being fully compliant with DLNA/UPnP-AV clients.

  1. Once Brew is installed, go back to your terminal and get ready.
  2. Type the following command on your terminal to install minidlna:
    brew install minidlna
  3. This will download & install minidlna on your device. If you get any errors, then please run this command and then go back to step 2:
    brew update
  4. If minidlna installed without problems, move to the next step.

Some clarifications:

  • The software is installed on the folder /usr/local/Cellar/minidlna/x.x.x (x.x.x would be the version of minidlna installed.

Step 3: Setup minidlna sharing folders

This step is about to setup all the following: device name, folder where your media is stored and that you want to share across your network.

  1. Go back to your terminal.
  2. Open a text editor to modify the configuration file. So type the following command:
    nano /usr/local/Cellar/minidlna/x.x.x/share/minidlna/minidlna.conf
  3. Now customize your settings, please make sure that you customize the media_dir with the actual path where your media is stored, below is an example that you can use :
    friendly_name=Mac DLNA Server
    media_dir=/Users/salvador_aguilar/movies/

    Please note that you can name it what ever you’d like and the media_dir NEEDS to be an existing directory/folder on your computer so be sure to put the right path.

  4. Brew does not creates the symbolic links for minidlna to work well, so we are going to have to do this:
    ln -s /usr/local/Cellar/minidlna/x.x.x/sbin/minidlnad /usr/local/bin/minidlnad

    What you are doing here is basically creating a shortcut from our recently installed minidlna on the brew directory to our /usr/local/bin directly which is where most used commands are stored. In a few words to make your life easier. Less is more, enjoy!

  5. Launch minidlna with the following command:
    minidlna

    If you have OS X firewall turned on, then you will get a prompt that you will need to approve to give permission to minidlna to serve files on your network.

  6. Voilá! Now you can turn on your TV, XBOX, Android Device or any DLNA capable device that is connected to the same network as your Mac, and you should be able to see your Mac serving media files via DLNA.

    No need for Apple TV or any other Apple branded media devices. This will make your Mac talk to EVERYONE using a STANDARD that they have refused to use or implement! Bad Apple!

Let me know if you need a guide for a specific device, XBOX, Playstation, Roku, etc. I’m always eager for new challenges!


					
Avoid SSH Timeouts on the Mac Terminal — February 18, 2016

Avoid SSH Timeouts on the Mac Terminal


I admit it, I’m always with a lot of applications opened, Chrome with at least 6 tabs, Skype, Slack, PHPStorm or SublimeText, Airmail or Outlook for Mac, Photoshop and terminal.

I regularly login via SSH to VPS in Digital Ocean and AWS EC2 and then run some commands like:

wp plugin install wordfence

Then I go to the wordpress site and start adjusting the settings, but by the time I get back to the terminal (5 – 10 minutes), the SSH session is frozen, so I’m forced to open a new one. I honestly became tired of this, and I remembered that SSH was built on TCP and as such it should have some “Keep Alive” settings like on SIP (sorry I come from the call center world). And after some search online, I found that you can make this change both from the server side (SSHD: Secure SHell Daemon) or from your CLI (*nix, Linux & Mac).

Reduce SSH Timeouts from the server

Reduce SSH Timeouts from your computer

All you need to do is to setup your ssh client to send a “Keep Alive” signal to the server every certain amount of seconds. So you can add the following text to your ~/.ssh/config file:

Host remote-host
HostName remote-host.com
ServerAliveInterval 120

This basically tells your computer to send “keep alive” signals to remote-host.com every 120 seconds (2 minutes). That way the session will not get frozen for that server.

If you want to enable this for all of the hosts that you connect to, then simply add the following strings instead:

Host *
  ServerAliveInterval 120

This will setup the “keep alive” signal interval to 2 minutes for any host that you connect to via SSH.

After you finish editing the file, please make sure to change the permissions on the file using the following command:

chmod 600 ~/.ssh/config

And there you go, as simple as that! No more timeouts on my terminal app on my Mac OS El capitan MBP!

%d bloggers like this: