每个用户~目录下有.ssh 目录 没有的话可以自己建,通过公钥体制可以做到很多个用户可以登陆linux 系统上的同一个用户,而他们都不知道出这个用户的密码,并且互相不知道各自的私钥,(他们持有不同的私钥,而其各自相对应的公钥都是这个用户可以信任的)

 假设 我的系统上有一个用户名为git ,另外有两个用户user1 ,user2  我现在想做到  它们运行

ssh git@localhost   时, git 自己、及user1 不需要输入密码,而user2 却需要输入密码

首先,我们想让git ,user1 可以通过公钥体制的证而不需要输入密码。那么他们各自应该有相应的公钥私钥对。    

然后git 用户把它信任的公钥加入到信任列表中(包括自已的公钥及user1的),

生成公钥私钥的命令是ssh-keygen

首先给git 用户生成,以git 用户登陆。

 

在/home/git/.ssh/ -lh 目录下生成了两个文件id_rsa ,id_rsa.pub  前者为私钥,后者为公钥,私钥自己保留,公钥可以任意公开,

然后user1 用户做同样的处理在/home/user1/.ssh/目录 下也会生成这两个文件

然后要做的就是把git ,user1 用户的公钥导入到git 用户我信任列表中,也就是/home/git/.ssh/authorized_keys文件

首先导入git 用户的公钥。

git .ssh $ cat /home/git/.ssh/id_rsa.pub >>  /home/git/.ssh/authorized_keys

然后是导入user1 的公钥,

user1 .ssh $ cp /home/user1/.ssh/id_rsa.pub  /tmp/             (user1 用户运行此命令)
git .ssh $ cat /tmp/id_rsa.pub >>/home/git/.ssh/authorized_keys  (git 用户导入user1 的公钥)

这是git 第一次登陆,


 

这是第二次登陆,不再出现提示。

user1 也应该可以登陆,

而user2 登陆,则会提示输入密码,如

 

注意/home/git/.ssh/id_rsa /home/user1/.ssh/id_rsa 是私钥,要保存在自已的~/.ssh 目录,在登陆ssh 时,ssh会主动用这个文件与服务器端进行验证

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐