ssh 连接 通过公钥体制,无密码登陆
每个用户~目录下有.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会主动用这个文件与服务器端进行验证
更多推荐
所有评论(0)