SSH免密码登陆的解释和示范

来源:互联网 发布:原油数据公布最新数据 编辑:程序博客网 时间:2024/06/04 18:00

无密码登陆其实是指通过证书认证的方式登陆,使用一种被称为"公私钥"认证的方式来进行ssh登录。

这句话是什么意思呢?就是,linux的用户登陆一般都是需要密码的,这里无密码登陆说的就是这个密码,这个密码是针对特定的用户即user的,

并不是针对机器的,所以免密码登陆就是某个用户user免密码登陆,免密码的方式就是公钥认证的方式,这个公钥相当于一把钥匙,比如我想用

机器A的用户user_A登陆机器B的user_A,那么在机器A的用户user_A下,利用ssh生成一个密钥:

ssh-keygen -t rsa -P ''
这里ssh- keygen是生成密钥的命令,-t 和-P都是参数,而rsa是密钥的类型,当然还有dsa类型的,这个dsa和rsa只是 一种加密方法

而已。酱紫,就会发现在文件夹.ssh里多了id_rsa和id_rsa.pub。注意,这个.ssh文件夹一般都是隐藏在用户目录下的,路径一般~/.ssh,所以你

可能需要利用命令ls -al 来查看是不是有这么个文件夹,否则你就要mkdir .ssh了。然后把id_rsa.pub追加到authorized_keys中,追加原因是啥呢?

就是虽然你生成了这个密钥,但是你没授权,人家没法儿用,

所以:

cat  id_rsa.pub >> authorized_keys

地方.ssh下就多了authorized_keys这个文件。那这时候能免密码登陆了么?

答案是不行,为什么因为系统还不知道你生成了这么个钥匙,su之后在root下重启ssh服务:

service  sshd  restart
酱紫,你就能ssh user_A了。

接下来,你要免密码登陆B的user_B,那么利用scp(使用前提,就是能在A上ping通B机器)将这个id_rsa.pub传输到你要登陆的机器B的用户user_B下的.ssh

的文件夹中:

那么,你要在user_B的.ssh中再生成user_B的id_rsa.pub然后追加到user_B的authorized_keys去:scp id_rsa.pub user_B@机器B的ip地址:~/.ssh(建议:

这个id_rsa.pub应该和user_B的id_rsa.pub区别开,可以改成usera_rsa.pub)

scp id_rsa.pub user_B@机器B的ip地址:~/.ssh(建议:这个id_rsa.pub应该和user_B的id_rsa.pub区别开,可以改成usera_rsa.pub)
但是这个过程中还需要输入user_B的密码,然后在.ssh下就多了usera_rsa.pub;然后再user_B的.ssh下将usera_rsa.pub追加到authorized_keys中去。

在B机器的root下重启ssh。

scp id_rsa.pub user_B@机器B的ip地址:~/.ssh(建议:这个id_rsa.pub应该和user_B的id_rsa.pub区别开,可以改成usera_rsa.pub)

v然后修改A和B机器上sshd 配置文件内容:

vim   /etc/ssh/sshd_config

找到以下内容,并去掉注释符"#":

RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys

然后在机器的用户user_A下ssh  B,然后会显示相应登陆成功信息。

另外需要注意的几个权限(chmod):

用户目录权限为 755 或者 700,不能是其他权限;.ssh目录权限必须为755;

 id_rsa.pub 及authorized_keys权限必须为644;id_rsa权限必须为600 .


scp id_rsa.pub user_B@机器B的ip地址:~/.ssh(建议:这个id_rsa.pub应该和user_B的id_rsa.pub区别开,可以改成usera_rsa.pub)
0 0
原创粉丝点击