linux--私钥登陆

遇到问题:对于公司的远程linux服务器,虽然刚开始会分配一个超级管理员来让你做操作,但时间久了,很明显,这是相当不安全的。对于远程的服务器。基本是会限制root直接登陆的。然后新建其他用户,并只让其他用户有sudo的权限。
解决问题:创建公钥,私钥来登陆,主要是权限设置妥当,否则也会导致登陆不成功。
实现思路:
1.在客户端创建一个用户,生成私钥,公钥;
2.在服务器上创建一个用户(可以使用sudo的相应权限,),把客户端的公钥传到服务器相应用户下.ssh,并更改名为authorized_keys。
操作步骤:
1.       客户端创建密钥



2.       在服务器上创建用户(给予sudo权限)。 服务器上创建用户server。把客户端的私钥拷贝到该用户下.ssh文件下,并改名为authorized_keys。给authorized_keys 600的权限。注意.ssh文件给700的权限,否则也会导致后来的ssh私钥登陆没权限,不成功的报错。



3.    客户端登陆服务器



4.      服务器上的该用户给予sudo的权限。
使用visudo命令来修改/etc/sudoers文件,使用visudo命令如果修改错了,是会提示错误,并不让保存。    切记不要直接编辑修改/etc/sudoers 如:用 vi /etc/sudoers 命令来编辑,一旦编辑错了,即会导致其他sudo的用户都无法执行sudo的命令。
并进入 /etc/sudoers文件,找到wheel组,并把%wheel前的#号去掉,如下图状态。



把用户加入wheel组,vi /etc/group



注意:不同linux版本,用户的权限不同。ssh的私钥公钥登陆略有不同,注意就好。
实际上,这样创建完成了。就已经可以在客户端使用私钥登陆到服务器了。实现了安全登陆。然后我ssh登陆之后,服务器端总是要询问用户的密码。于是想去掉这个密码。直接使用ssh的私钥登陆之后,就可以执行相关sudo 的命令。
linux sudo不用密码的方法:
说到使用sudo权限,一般都会编辑/etc/sudoers这个文件。 默认情况我们会看到有"%wheel ALL=(ALL) ALL"一句话,就是允许wheel组在所有主机上执行所有命令,当然是需要passwd的。
1. 如果想把wheel组的用户都sudo不用密码那么可以将这一行换为:"%wheel ALL=(ALL) NOPASSWD: NOPASSWD ALL"即可。
2. 如果仅仅想让user1用户sudo不需密码,则可添加"user1 ALL = NOPASSWD: ALL"这样一行。
3. 如果让jay用户sudo不用密码即可执行某几个命令,可这样写"user1 ALL = NOPASSWD: /usr/bin/abc.sh, /usr/sbin/adduser"
4. 欲知其他更多配置方式,请运行"man sudoers"看帮助文档吧。
注意:我自己的一个配置没生效,找原因还找了阵子,写到这里吧。
我添加"user1 ALL = NOPASSWD: ALL"这样一行;但是,user1执行sudo时还是需要输入密码,这是为什么?
原来是,我这一行在"%wheel ALL=(ALL) ALL"组策略之前,后面的组配置覆盖了前面的配置,而user1属于admin组,所以需要密码。
这时,只需要将%admin行用#注释掉即可。OK!然后立马就生效了,可能执行sudo时系统都会去读取/etc/sudoers的,所以立即就生效了。

猜你喜欢

转载自ymq267.iteye.com/blog/2368960