Google Sites Access Model
People often ask how they can add the facility for people to create a login and password to access their Google Site specific to their Site. This is not something that can be done with Google Sites. Google Sites already provides a user access control mechanism based on Google accounts. See how to control access to your site. This mechanism should prove sufficient for most people but it is necessary to understand the way this model works.
Basically there are two distinct access control models for websites.
User Access Models
Model 1 - Website specific user account
User finds a web site and creates account specific to that site. Generally an account can be created by the user with no intervention required by site owner for membership. Under this model, the site owner has the responsibility to maintain a user account database, manage the security issues with passwords etc
Model 2 - Approval of non-website specific account (the Google Sites model)
User finds site and asks to become a member using an account (a Google account) they already have. The Site owner only has to approve/deny access to the requesting account. They don't have to worry about maintaining a user accounts database for userids and passwords.
This is the the model Google Sites uses. A user must have a Google account. They can ask the Site owner to share the site with them. The Google Site owner has to approve access by this Google account.
For New Sites, the Site owner will need to add the accounts they wish to share the Site with (either directly or using a Google Group) and send them a link to the Site
Provide Request access button
How to give users a way to ask a Site owner to give them access to their Site is not immediately obvious. One option is to provide a link to a part of the site that is only accessible to the Site owner. For example, for the Site philridoutdemosite I could use http://sites.google.com/site/philridoutdemosite/system/app/pages/admin .
This works adequately for Classic 'consumer' Sites but does not work for GSuite Sites (I know of no way to request access to a GSuite based Site) and this is the simplest option for most people.
On receipt of a request for access, the easiest option is simply to click the 'allow access' link. But see also how to Control Access with Groups.
For New Sites, the only option appears to be to open the Site editor and copy the link from the address bar that ends /edit and send potential Site users that link (or provide the link in a Site that is publicly available). This will result in them being presented with a 'You need permission' screen where they can request access. As the Site owner, when you receive the access request, you can choose to give them just view only access.
For example, the button above is linked to a New Site of mine that is not publicly shared. If you click the button, you will see a message saying you do not have access and allowing you to request access. On receipt of such a request, I can choose whether or not to grant you access to the Site.
Provide a Request Access Form
An option that will work for any type of Site is to create and embed a Google Form. This has the advantage that you can at the same time ask for any additional information you would like to have from your Site users. It has the disadvantage that adding users as members of the Site will have to be done manually unless you write a Google Apps Script to process form responses and add users to your Site (not currently available for New Sites). Again, I recommend reviewing how to Control Access with Groups.