Suppose I have 5 users and 100 Linux machines with remote shell enabled. How do I set the environments up to allow these few users to log in to any of the machines with the same credentials?
Suppose I have 5 users and 100 Linux machines with remote shell enabled. How do I set the environments up to allow these few users to log in to any of the machines with the same credentials?
Set up LDAP domain
By using an LDAP domain every authentication request to any machine is redirected to the domain controller. As far as I know, some Linux distros can join a Windows domain, if you have already one active. With this you have full centralized control over all the users in the network. You can add and remove users immediately from a single machine.
Pros:
Cons:
AFAIK you can't use public key authenticationDistribute SSH keys from a centralized machine
This is very useful when you want to use stronger authentication with public keys. You can upload all the users' keys on a single box that runs a Cron job
scp
ing the pubkeys to the correct home directories at certain time intervalsPros:
Cons:
Mount the home directories in a shared network drive (NFS, SSHFS...)
This has the advantage of real-time effects of modification of public keys (since they are always read from network share).
Also, if you make/etc/shadow
a symlink to a shared drive you have real-time user management from your controllerPros:
Cons:
Below is how a large organization does it with Puppet and SSH keys. The puppetmaster distributes the user accounts, ssh settings directory for each user, and sets a password for each user.
http://itand.me/using-puppet-to-manage-users-passwords-and-ss
This can be replicated in any config management system, not just Puppet.