ssh 免密码登录主要是使用公钥与私钥来实现,在这里需要用到一个命令ssh-keygen
ssh-keygen命令主要用于生成、管理ssh认证密钥,支持RSA和DSA两种非对称加密方式。
用法: ssh-keygen 参数 参数: -b:指定密钥长度; -e:读取openssh的私钥或者公钥文件; -C:添加注释; -f:指定用来保存密钥的文件名; -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥; -l:显示公钥文件的指纹数据; -N:提供一个新密语; -P:提供(旧)密语; -q:静默模式;
举例:
首先生成公钥和私钥(以rsa方式为例)
上面需要指定的保存文件,密码采用默认即可(直接回车)
之后会在.ssh文件下生成两个文件
[root@VM_112_250_centos ~]# cd /root/.ssh [root@VM_112_250_centos .ssh]# ll total 8 -rw-r--r-- 1 root root 0 Nov 15 10:19 authorized_keys ==》可用于登陆该用户的公钥 -rw------- 1 root root 1679 Dec 3 16:15 id_rsa ==》新生成的私钥文件 -rw-r--r-- 1 root root 404 Dec 3 16:15 id_rsa.pub ==》新生成的公钥文件
有了这些文件,我们就可以采用无密码的方式远程登陆了
无密码远程登陆
将上面生成的公钥文件复制到被登陆机器
的.ssh目录下,然后将其内容追加到.ssh目录下的authorized_keys中
命令:
[root@VM_112_250_centos .ssh]# cat authorized_keys ==》打开文件 [root@VM_112_250_centos .ssh]# cat id_rsa.pub >>authorized_keys ==》向已存在的文件追加内容 [root@VM_112_250_centos .ssh]# cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIA38NWpbJnR2YYn9IOiCAxyFa30EJAll2cminUJ7mDEo/+A6axzgDsfRjkWUdwtLGT107Kgnt+RZOxa+NDaxECHrgFzLlORwdBOAsfi6alwDiu4VCn7HKm0C4p7FCXWydYbojJ+t4MC/D/9SuKshzrlpfCGFiZDAB9qc1SoQduqiKDzjLUfhJCiFMK+pNJcGBWuiJLqkoD34QOx0G6j5quFW/2uqqt2eLtMn7IFSNFpNkkRkeSJmLqE4MI1SjPj4bw7vxCn8fVjnzd4xUFOhOcoUmuRz4BgMrCC1X4N7r0G8pYDn1JCJcF4ojTXbTjyuI2B0WmvvNbzHmXmsEyMKF root@VM_112_250_centos
注意:在这里可能会出现将用户公钥添加到.ssh/authorized_keys文件后任然无法采用无密码登录的问题
这里很大可能是权限的问题,authorized_keys文件权限需要设定为600(拥有者具有读写的权限),.ssh目录需要设定为700(拥有者具有读写执行的权限)
更改权限命令,关于权限的介绍可以参考这里 http://www.luxinzhi.com/system/122.html
[root@VM_112_250_centos ~]# chmod 700 .ssh [root@VM_112_250_centos ~]# chmod 600 .ssh/authorized_keys
本文固定链接:心知博客 » ssh免密码实现远程登陆
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!