最近想把自己的主机跟远程服务器实现免密登陆,经过网上的一番搜索后发现自己还是失败了,最终发现本机并没有将远程配置信息加入本机
config
当中,然后每次登陆都跳过公私钥配对。
目标及原理
目标
我们的目标很简单,在命令行输入ssh 用户名
即可登陆远程服务器。
原理
在了解免密登陆之前我们先简单了解下ssh的登陆过程,大概就是client向server发起连接请求时,server将公钥返回给client,client拿到公钥后对密码进行加密后发送到server,最终server私钥解密后进行匹配验证。

免密登陆的原理大概就是将client生成的公钥添加到server的authorized_key
文件,当client发起登陆请求时,server将pubKey发送给client,client将Digest1发送给server比较加密字符串若相等则免密。

新增用户并赋予权限
新增用户
1、创建新用户:xshellv1
[root@localhost ~]
2、为新用户创建初始化密码
1 | [root@localhost~]# passwd xshellv |
授权
个人用户的权限只可以在本home下有完整权限,其他目录需要别人授权。经常需要root
用户的权限,可以通过修改sudoers文件来赋予权限。
新创建的用户并不能使用sudo
命令,需要给他添加授权。
1、查找sudoers文件路径并赋予权限
1 | [root@localhost~] |
2、修改sudoers文件
输入命令 vim /etc/sudoers
修改sudoers文件,添加新用户信息:1
2
3## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xshellv ALL=(ALL) ALL #这个是新用户
然后输入命令 wq!
保存修改。
3、收回权限1
2[root@localhost~]# chmod -v u-w /etc/sudoers
mode of ‘/etc/sudoers’ changed from 0640 (rw-r-----) to 0440 (r--r-----)
生成公钥
生成公钥的步骤网上已经有很多了,这里不再赘述了,不会的可以参考Mac OS X下配置远程Linux 服务器SSH密钥认证自动登录
这里配置完可能遇到这样的错误:
实现免密登陆
1. 本机配置config
1 | Host xshellv |
2. 公钥上传服务器
将生成的 centos_rsa.pub 上传至服务器,并添加到 authorized_keys 当中:cat id_rsa.pub >> .ssh/authorized_keys
,同时设置为只有所有者可以读写:chmod 600 authorized_keys
这样当输入ssh xshellv
时会自动使用私钥解密公钥加密字符串,若相等则免密登陆成功!