My Internet Home

Menu

Tag Archives: encryption

Consider two machines A and B. We want to connect machine B from A over SSH. To do so we have to specify password every time we connect. Here, we can create a setup where SSHing can be done without the password prompt. On connecting machine B from A, ssh won’t ask for password.

Overview of Setup

Generate public and private encryption keys on machine A.

Authorize machine A in machine B by appending the public key of A in the file authorized_keys of machine B.

That’s it! You can now access (SSH) machine B from A without specifying the password. B has been now authorized to access A without requiring the password.

Detailed Steps

Method 1

Login to machine A and execute the following command:

ssh-keygen && ssh-copy-id -i user@B

The first command generates keys. It will ask for path of the keys and passphrase. Hit Enter key repeatedly to choose the default values.
The second command adds generated key to B. It will ask for password of user at machine B. And this would be the last time!

Method 2

Login to machine A.

Generate public and private keys like following:

ssh-keygen -t dsa

It will ask for path of the keys and passphrase. Choose the default path and no password.
This will generate files id_dsa.pub and id_dsa in ~/.ssh

Browse for the above generated keys and copy the public key, that is id_dsa.pub, to the machine B.

Login to machine B.

Append the public key of A to the file authorized_keys:

cat id_dsa.pub >> .ssh/authorized_keys

Note: Create the directory .ssh in your home if it doesn’t exist.
You can now delete id_dsa.pub from machine B if you want to.

Make sure of the permissions of the directory .ssh and the file authorized_keys are read-write only by the targetted user. Otherwise it might not work.

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

Now go back to machine A and SSH machine B. It should not ask for the password.

At times, you need a simple encryption and decryption functionality to secure sensitive information. In my case, I needed to store passwords on disk to implement the “Remember Password” functionality of the GuiClient example of QXmpp.

Instead of going for a 3rd party library where you just need a very basic crypto functionality I will suggest using XOR encryption. XOR encryption is pretty easy to implement. I will also present my implementation of this algorithm using Qt C++.

XOR (Exclusive OR) Encryption or XOR Cipher is a simple symmetric encryption algorithm. It operates according the principle that XORing a data twice with the same key results in the same data.

The first XOR of the data and key gives the encrypted data. Then the decryption involves XORing the encrypted data with the same key.