每一个用户~目录下有.ssh 目录 没有的话能够本身建,经过公钥体制能够作到不少个用户能够登录linux 系统上的同一个用户,而他们都不知道出这个用户的密码,而且互相不知道各自的私钥,(他们持有不一样的私钥,而其各自相对应的公钥都是这个用户能够信任的)linux
假设 个人系统上有一个用户名为git ,另外有两个用户user1 ,user2 我如今想作到 它们运行git
ssh git@localhost 时, git 本身、及user1 不须要输入密码,而user2 却须要输入密码服务器
首先,咱们想让git ,user1 能够经过公钥体制的证而不须要输入密码。那么他们各自应该有相应的公钥私钥对。 ssh
而后git 用户把它信任的公钥加入到信任列表中(包括自已的公钥及user1的),spa
生成公钥私钥的命令是ssh-keygenit
首先给git 用户生成,以git 用户登录。服务器端
在/home/git/.ssh/ -lh 目录下生成了两个文件id_rsa ,id_rsa.pub 前者为私钥,后者为公钥,私钥本身保留,公钥能够任意公开,rsa
而后user1 用户作一样的处理在/home/user1/.ssh/目录 下也会生成这两个文件密码
而后要作的就是把git ,user1 用户的公钥导入到git 用户我信任列表中,也就是/home/git/.ssh/authorized_keys文件im
首先导入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会主动用这个文件与服务器端进行验证