Seu arquivo .htaccess parece bem. A única razão pela qual não está funcionando como você tem é que o Apache está configurado para ignorá-lo.
Na sua configuração do apache, idealmente no arquivo de configuração sites- *, adicione:
<Directory /path/to/the/directory/you/are/protecting/>
AllowOverride AuthConfig
</Directory>
A diretiva AllowOverride é o que permite o acesso à htaccess arquivo para funcionar. Por padrão, a maioria das configurações do Apache está desativada (definida como None ), incluindo o Ubuntu / Debian.
No seu arquivo .htpasswd , a senha deve ser criptografada. Você pode fazer isso mais facilmente usando a ferramenta htpasswd que o mezgani sugeriu. Será assim se você ler o arquivo:
bob:abJnggxhB/yWI
Com a diretiva AllowOverride definida para pelo menos AuthConfig , seu arquivo .htaccess no lugar e seu .htpasswd contendo um usuário com uma senha criptografada, você deve ser bom para ir.