Can some one please tell me, for using SSH, why does a host also need to have a public and private key? And how can I generate a public/private key pair for myself?



You need the host key so you know you are connecting to the right server and not a fake one.

| improve this answer | |
# private key
openssl genrsa -out privkey.pem 2048

# public key
openssl rsa -in privkey.pem -pubout -out pubkey.pem

For more information:

| improve this answer | |

It differs from one distribution to another. On Ubuntu use this command:


It will generate two keys, one public (the one you will share to the server) and the other is private and you shall not share with anyone. Once the public key is copied in the ~/.ssh/authorized_keys in the server, you can login without being prompt for password.

| improve this answer | |

Public/private keys are like locks and keys: the server sends you a lock, but keeps the key, and then you lock your messages to the server. You need to send the server a lock as well so you can retrieve that data.

Wikipedia has a great example of this.

| improve this answer | |

Anyway to generate keys you should use ssh-keygen. You need private and public keys to use SSL, an encryption system based on asymmetric keys.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.