ssh

mac免密登陆centos服务器

免密登陆密钥配置后同时在本机新增config配置

Posted by Xshellv on 2021-04-28

最近想把自己的主机跟远程服务器实现免密登陆,经过网上的一番搜索后发现自己还是失败了,最终发现本机并没有将远程配置信息加入本机config当中,然后每次登陆都跳过公私钥配对。

目标及原理

目标

我们的目标很简单,在命令行输入ssh 用户名即可登陆远程服务器。

原理

在了解免密登陆之前我们先简单了解下ssh的登陆过程,大概就是client向server发起连接请求时,server将公钥返回给client,client拿到公钥后对密码进行加密后发送到server,最终server私钥解密后进行匹配验证。

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

新增用户并赋予权限

新增用户

1、创建新用户:xshellv

1
[root@localhost ~]# adduser xshellv

2、为新用户创建初始化密码

1
2
3
4
5
[root@localhost~]# passwd xshellv
Changing password for user xshellv.
New password: # 输入密码
Retype new password: # 再次输入密码
passwd: all authentication tokens updated successfully.

授权

个人用户的权限只可以在本home下有完整权限,其他目录需要别人授权。经常需要root用户的权限,可以通过修改sudoers文件来赋予权限。

新创建的用户并不能使用sudo命令,需要给他添加授权。

1、查找sudoers文件路径并赋予权限

1
2
3
4
5
6
[root@localhost~]# whereis sudoers                     # 查找sudoers文件路径
sudoers: /etc/sudoers /etc/sudoers.d /usr/share/man/man5/sudoers.5.gz
[root@localhost~]# ls -l /etc/sudoers # 查看权限
-r--r----- 1 root root 3938 Sep 6 2017 /etc/sudoers # 只有读权限
[root@localhost~]# chmod -v u+w /etc/sudoers # 赋予读写权限
mode of ‘/etc/sudoers’ changed from 0440 (r--r-----) to 0640 (rw-r-----)

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
2
3
4
Host xshellv
HostName 119.45.162.84
User xshellv
IdentityFile ~/.ssh/centos_rsa # 上一步在client生成的私钥

2. 公钥上传服务器

将生成的 centos_rsa.pub 上传至服务器,并添加到 authorized_keys 当中:cat id_rsa.pub >> .ssh/authorized_keys,同时设置为只有所有者可以读写:chmod 600 authorized_keys

这样当输入ssh xshellv时会自动使用私钥解密公钥加密字符串,若相等则免密登陆成功!

参考文章