Making a WordPress blog private allows you to specify exactly who can view the content of your website. If anyone else tries to visit your blog they will get a message saying they need to be a member to have access.
This feature comes in handy if you want to your blog to be read only by your friends and family. Any unauthorised person will not be able to see the content of your WordPress website.
The Privacy Settings control who can and cannot view your blog. You can change your Privacy Settings via your Settings -> Reading page.
Select I would like my site to be private, visible only to users I choose option to create a private blog. Now only those whom you invite them to be a viewer will be able to view your private blog.
After making your blog private, visitors to your blog will see a notification if they are not logged into their WordPress.com account when trying to view your blog.
If you want to share your private blog with others, go to Users > Invite New. In the Invite a New User to Your Blog section, type the user’s email address or WordPress.com username, if you know it. Select Viewer from the drop-down.
The user you invited will receive an invitation via email. They will need to click the Accept Invitation button in the invitation email. If the person you invited do not have a WordPress.com account, they will need create a user account.
Self Hosted WordPress.org
In self hosted WordPress the functionality to hide your entire blog from public view, or to restrict it to certain users, is not part of the core WordPress product. So you will need to download a plugin to make your blog completely private. There are many plugins that will let you password protect your blog.
Password Protected is one of the best plugin that you can use to make your blog private. You can quickly password protect your WordPress blog with a single password. The plugin does not protect and images or uploaded files so if you enter and exact URL to in image file it will still be accessible.
Page Restrict is another plugin that allows you to restrict all, none, or certain pages/posts to logged in users.