需求:服务器的root和密码登录都禁用,只开放普通用户登录,这时需要给普通用户配置秘钥文件,实现无密码登录

需要注意的是使用什么用户,就把秘钥文件拷入到该用户的家目录下,如果是root用户,就直接拷贝到/root/.ssh/下(本次测试是使用普通用户oper测试的)

  1) .ssh目录的权限必须是700

  2) .ssh/authorized_keys文件权限必须是600

测试机器:

  host1:192.168.0.131

  host2:192.168.0.132

一、在新机器生成秘钥:

[root@host1 .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:O9C8LWfjT44gIJR+URWH3FFJhsgqMU8VmaDDZAGWR7k root@host1
The key's randomart image is:
+---[RSA ]----+
| o+=oo*=Oo=+. |
| ..==o. B.o.. |
| o.=* . |
| o Eooo |
| o o.. S |
| o . . + |
| . * = . |
| . B = |
| o.o |
+----[SHA256]-----+
[root@host1 .ssh]# ls
id_rsa id_rsa.pub known_hosts

二、将id_rsa.pub拷入需要登录的服务器的用户家目录下的.ssh/authorized_keys中(即192.168.0.132下的/home/oper/.ssh/authorized_keys)

  以下三种方法任选其一即可

  2.1:通过ssh-copy-id的方式

[root@host2 oper]# mkdir /home/oper/.ssh
[root@host2 oper]# chown oper:oper .ssh/
[root@host2 oper]# chmod .ssh
[root@host2 oper]# ls -la
总用量
drwx------. oper oper 4月 : .
drwxr-xr-x. root root 4月 : ..
-rw-------. oper oper 4月 : .bash_history
-rw-r--r--. oper oper 8月 .bash_logout
-rw-r--r--. oper oper 8月 .bash_profile
-rw-r--r--. oper oper 8月 .bashrc
drwx------. oper oper 4月 : .ssh [root@host1 .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub oper@192.168.0.132
oper@192.168.0.132's password:
Number of key(s) added: Now try logging into the machine, with: "ssh 'oper@192.168.0.132'"
and check to make sure that only the key(s) you wanted were added.
#登录测试
[root@host1 .ssh]# ssh oper@192.168.0.132
Last failed login: Mon Apr :: CST from 192.168.0.131 on ssh:notty
There was failed login attempt since the last successful login.
Last login: Mon Apr :: from 192.168.0.131
[oper@host2 ~]$

  2.2:通过scp将内容写到对方的文件中

[root@host1 .ssh]# scp -p ~/.ssh/id_rsa.pub oper@192.168.0.132:/home/oper/.ssh/authorized_keys
oper@192.168.0.132's password:
id_rsa.pub
#登录测试 % .6KB/s :
[root@host1 .ssh]# ssh oper@192.168.0.132
Last login: Mon Apr :: from 192.168.0.131
[oper@host2 ~]$

  2.3:通过ssh命令写入,此方式可写成脚本,然后批量写入主机

  此方式也可直接把/root/.ssh/id_rsa.pub的内容直接复制粘贴到host2下/home/oper/.ssh/authorized_keys中

[root@host1 .ssh]# ssh oper@192.168.0.132 "echo `cat /root/.ssh/id_rsa.pub` >> /home/oper/.ssh/authorized_keys "
oper@192.168.0.132's password:
[root@host1 .ssh]# ssh oper@192.168.0.132
oper@192.168.0.132's password: [root@host2 .ssh]# pwd
/home/oper/.ssh
[root@host2 .ssh]# ll
总用量
-rw-rw-r--. oper oper 4月 : authorized_keys
[root@host2 .ssh]# chmod authorized_keys
[root@host2 .ssh]# ll
总用量
-rw-------. oper oper 4月 : authorized_keys
#登录测试
[root@host1 .ssh]# ssh oper@192.168.0.132
Last login: Mon Apr :: from 192.168.0.131
[oper@host2 ~]$ 出现需要密码登录是因为host2的authorized_keys权限没有设置为600;把权限设置为600后,再执行 ssh oper@192.168.0.132就可以了,如果之前有权限是600的authorized_keys;则可直接登录

PS:如果普通用户需要切换到root用户且无需输入密码,则在root用户模式下执行命令:visudo 

[root@host2 ~]# visudo  #最后一行加入
Cmnd_Alias SU = /bin/su
oper ALL = (root) NOPASSWD: SU
:wq
[root@host2 ~]# su - oper
#登录测试
[oper@host2 ~]$ sudo su #最好使用sudo su - 完全切换,su会加载不出来环境变量
[root@host2 oper]#
附:文件说明
     ~/.ssh/identity
             该用户默认的 RSA1 身份认证私钥(SSH-1)。此文件的权限应当至少限制为"600"。
             生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
             ssh(1) 将在登录的时候读取这个文件。
     ~/.ssh/identity.pub
             该用户默认的 RSA1 身份认证公钥(SSH-1)。此文件无需保密。
             此文件的内容应该添加到所有 RSA1 目标主机的 ~/.ssh/authorized_keys 文件中。
     ~/.ssh/id_dsa
             该用户默认的 DSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
             生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
             ssh(1) 将在登录的时候读取这个文件。
     ~/.ssh/id_dsa.pub
             该用户默认的 DSA 身份认证公钥(SSH-2)。此文件无需保密。
             此文件的内容应该添加到所有 DSA 目标主机的 ~/.ssh/authorized_keys 文件中。
     ~/.ssh/id_rsa
             该用户默认的 RSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
             生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
             ssh(1) 将在登录的时候读取这个文件。
     ~/.ssh/id_rsa.pub
             该用户默认的 RSA 身份认证公钥(SSH-2)。此文件无需保密。
             此文件的内容应该添加到所有 RSA 目标主机的 ~/.ssh/authorized_keys 文件中。
     /etc/ssh/moduli
             包含用于 DH-GEX 的 Diffie-Hellman groups 。文件的格式在 moduli(5) 手册页中描述。

Linux下实现普通用户免密码登录【超详细】的更多相关文章

  1. linux下设置了SSH免密码登录但还是需要输入密码的解决办法

    今天在设置linux的免密码登录后,仍然需要输入密码,后来找到了原因,是因为用户没有权限修改.ssh目录下的know_hosts文件导致的. 具体情况是这样的: 在/home/username/.ss ...

  2. Linux下实现普通用户免密登录并执行root权限

    需求:服务器的root和密码登录都禁用,只开放普通用户登录,这时需要给普通用户配置秘钥文件,实现无密码登录 需要注意的是使用什么用户,就把秘钥文件拷入到该用户的家目录下,如果是root用户,就直接拷贝 ...

  3. 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理:[Hadoop系列]linux SSH原理解析 操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免 ...

  4. Linux使用ssh公钥实现免密码登录Linux

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例.有机器A(192.168.1.155),B(192.168.1.181).现想A ...

  5. redhat6.2下的ssh密钥免密码登录(原创)

    这个是我自己写的,鼓励转载,请说明转载地址:http://www.cnblogs.com/nucdy/p/5664840.html 在进行hadoop的免密码的登录操作是,老是发生no route等错 ...

  6. linux 服务器名 访问 shh免密码登录

    以根用户登录,或者登录后切换到根用户,然后在提示符下输入hostname命令,可以看出当前系统的主机名为localhost.localdomain.   更改/etc/sysconfig下的netwo ...

  7. linux ssh公钥免密码登录

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 一.SSH公钥登录原理 在平时工作中我们经常要远程登录服务器,这就要用到SSH ...

  8. SSH2免密码登录OpenSSH

    OpenSSH免密码登录SSH2http://blog.csdn.net/aquester/article/details/23836245 两个SSH2间免密码登录http://blog.csdn. ...

  9. OpenSSH免密码登录SSH2

    SSH2免密码登录OpenSSHhttp://blog.csdn.net/aquester/article/details/23836299 两个SSH2间免密码登录http://blog.csdn. ...

随机推荐

  1. Unix下zfs文件系统重组RAID-5后可以这样恢复

    存储做的RAID-5, SCSI硬盘,操作系统是FreeBSD,文件系统是zfs.本案例共有12块硬盘,11块硬盘里有数据,1块硬盘是热备盘.其中第6块数据硬盘出现故障,重组时需要将其剔除. 物理盘: ...

  2. Oracle RAC环境下定位并杀掉最终阻塞的会话

    实验环境:Oracle RAC 11.2.0.4 (2节点) 1.模拟故障:会话被级联阻塞 2.常规方法:梳理找出最终阻塞会话 3.改进方法:立即找出最终阻塞会话 之前其实也写过一篇相关文章: 如何定 ...

  3. java图片处理开源框架

    java图片处理开源框架 以前一直不明白,java开源框架什么意思,搜集资料得出以下结论 其实java框架可以理解为一个工具或者一个插件,将一个公用的.常用的技术封装起来,处理一些基础的.繁琐的问题. ...

  4. 阿里云CentOS部署小笔记

    快毕业了,我用近两周的时间完成了一个nodeJs+Vue-Cli+Mysql的毕业设计,到了部署的时候了. 然而,博主使用Linux的经验有限得很,所以只能自己慢慢地填坑了. 一.准备工作 1)阿里云 ...

  5. LXC学习实践(2)安装LXC

    1.准备工作: yum install gcc yum install libcap-devel yum install libcgroup 2.安装LXC 下载源代码:sourceforge.net ...

  6. OAuth2.0学习(1-10)新浪开放平台微博认证-手机应用授权和refresh_token刷新access_token

    1.当你是使用微博官方移动SDK的移动应用时,授权返回access_token的同时,还会多返回一个refresh_token: JSON 1 2 3 4 5 6 {     "access ...

  7. 南阳OJ-91-阶乘之和---二进制枚举(入门)

    题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=91 题目大意: 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为 ...

  8. 02、NetCore2.0优化之Nuget包

    02.NetCore2.0优化之Nuget包 在NetCore2.0中的包是如何管理的?如何存储的?微软做了哪些优化工作? -------------------------------------- ...

  9. Web标准的简单理解 不同内核浏览器的差异以及浏览器渲染简介(转)

    Web标准是一系列标准的集合.这些标准大概分三方面:结构.表现和行为.结构化主要有HTML, XHTML和XML,表现主要有CSS,行为标准主要包括对象模型,如 W3C DOM.ECMAScript等 ...

  10. 原生js的一些研究和总结(1)

    数据类型 基本类型值包括: undefined,null,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,它们的值保存在栈空间,我们通过按值来访问的. 引用类型包括 ...