How to setup the passwords-less authentication between two different accounts

倾然丶 夕夏残阳落幕 提交于 2019-12-02 13:29:51

If I understand your question, can you set up ssh-keys to allow user A and user B to log into to two different computers A & B without providing a password? Sure, but user A can't log into user B's account via ssh any more than user A can log into user B's account on a local machine. (directory ownerships are different for the $HOME, etc.. That's what su is for).

To create a password less login, let's take user A and computer A who has an account on computer B and would like to ssh hostnameB and login without providing a password.

(1) user A creates a public_key and private_key on computer A with ssh-keygen -t ecdsa (for an ecdsa encryption key. dsa keys are no longer supported due to insecurity in the current openssh). When ssh-keygen is run it will create two files (by default in $HOME/.ssh). The keys are id_edcsa (the private key) and id_ecdsa.pub (the public key).

(2) for user A to login to computer B without a password, he must first transfer his public_key to computer B and add it to his $HOME/.ssh/authorized_keys file on computer B. e.g. from computer A:

$ ssh-keygen -t ecdsa  # generate key-pair
$ cd ~/.ssh            # verify private and public keys created
$ rsync -a id_ecdsa.pub hostnameB:~/.ssh/id_ecdsa.pub.hostA
  password: enter pw

$ ssh hostnameB
  password: enter pw
$ cd ~/.ssh
$ cat id_dsa.pub.hostA >> authorized_keys  # permissions must be 0600
$ exit                # exit hostnameB

note: above you could rsync the public_key directory to the computer B ~/.ssh/authorized_keys file if you are sure one does NOT already exist to save time a completely skip the last step copying the transferred file into it above. e.g.

$ rsync -a id_ecdsa.pub hostnameB:~/.ssh/authorized_keys

(you may have to check permissions on computer B afterwards)

Now for the test, user A should no longer need a password to long into computer B. From computer A:

$ ssh hostnameB
$ welcome to hostnameB>

Now you simply repeat the process of creating key-pairs for each user and transferring the public_key to the host you want to access w/o a password and add the public_key to the authorized_keys file. (note: you can just copy the same private_key to everyone's ~/.ssh directory and add the same public_key to everyone's ~/.ssh/authorized_keys file, but that sort of defeats the purpose of having separate keys). note: each authorized_keys file must be owned by the user owning the $HOME/.ssh directory and the file permissions must be 0600 (-rw-------) or sshd will not allow a connection.

That's all there is to it (you can check in /etc/ssh/sshd_config to insure the name of authorized_keys file has not been changed to something else.

Give it a try and let me know if you have questions. I done it hundreds of times -- no issues as long as your follow those rules.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!