How to show just private posts in loop

You need to filter the main WordPress query using the pre_get_posts action. This code will get you started:

function show_only_private_post_for_logged_in_users( $query ) {

    if ( ! $query->is_main_query() || is_admin() ) {
        return;
    }

    if ( is_user_logged_in() ) {
        $query->set( 'post_status', 'private' );
    }
}
add_action( 'pre_get_posts', 'show_only_private_post_for_logged_in_users' );

It will only affect the main query and not on the WordPress admin side.