Hostbased Access Control

A limited type of per-account configuration is possible in OpenSSH if you use hostbased authentication rather than public-key authentication. Specifically, you can permit SSH access to your account based on the client's remote username and hostname via the system files /etc/shosts.equiv and /etc/hosts.equiv, and personal files ~/.rhosts and ~/.shosts. A line like:

    +client.example.com jones

permits hostbased SSH access by the user . Since we've already covered the details of these four files, we won't repeat the information in this chapter. [3.6.2]

Per-account configuration with hostbased authentication is similar to using host access control in your OpenSSH authorized_keys or Tectia authorization file. [8.2.4] Both methods may restrict SSH connections from particular hosts. The differences are shown in this table:

Feature

Hostbased access

Public-key host access

Authenticate by hostname

Yes

Yes

Authenticate by IP address

Yes

Yes

Authenticate by remote username

Yes

No

Wildcards in hostnames and IP

No

Yes

Passphrase required for logins

No

Yes

Use other public-key features

No

Yes

Security

Less

More

To use hostbased authentication for access control, all of the following conditions must be true:

Despite its capabilities, hostbased authentication is more complex than one might expect. For example, if your carefully crafted .shosts file denies access to sandy@trusted.example.com:

    # ~/.shosts
    -trusted.example.com sandy

but your .rhosts file inadvertently permits access:

    # ~/.rhosts
    +trusted.example.com

then sandy will have SSH access to your account. Worse, even if you don't have a ~/.rhosts file, the system files /etc/hosts.equiv and /etc/shosts.equiv can still punch a hostbased security hole into your account against your wishes. Unfortunately, using per-account configuration, there's no way to prevent this problem. Only compile-time or serverwide configuration can disable hostbased authentication.

Because of these issues and other serious, inherent weaknesses, we recommend against using the weak form of hostbased authentication, Rhosts authentication, as a form of per-account configuration. (By default it is disabled, and we approve.) If you require the features of hostbased authentication, we recommend the stronger form, called RhostsRSAAuthentication (OpenSSH) or hostbased (Tectia), which adds cryptographic verification of host keys.



[127] In olden days, the ssh executable needed to be setuid root.