ssh 链接 经过公钥体制,无密码登录

每一个用户~目录下有.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会主动用这个文件与服务器端进行验证