【Linux】ssh免密登录

一、ssh免密配置

ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例。

有机器A(192.168.1.155),B(192.168.1.181)。现想A通过ssh免密码登录到B。

1.在A机下生成公钥/私钥对。

[[email protected] ~]$ ssh-keygen -t rsa -P ‘‘

-P表示密码,-P ‘‘ 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/home/chenlb下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。

2.把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。

[[email protected] ~]$ scp .ssh/id_rsa.pub [email protected]:/home/chenlb/id_rsa.pub 
[email protected]‘s password:
id_rsa.pub                                    100%  223     0.2KB/s   00:00

由于还没有免密码登录的,所以要输入密码。

3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。

[[email protected] ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[[email protected] ~]$ chmod 600 .ssh/authorized_keys

下面列出.ssh目录及子文件的权限表:

drwx------  2 Hadoop hadoop 4096 2014-06-02 15:32 .
drwxr-xr-x 34 hadoop hadoop 4096 2014-06-02 15:06 ..
-rw-r--r--  1 hadoop hadoop 2252 2014-06-02 15:32 authorized_keys
-rw-------  1 hadoop hadoop  668 2014-06-02 15:11 id_dsa
-rw-r--r--  1 hadoop hadoop  615 2014-06-02 15:11 id_dsa.pub
-rw-------  1 hadoop hadoop 1675 2014-06-02 15:32 id_rsa
-rw-r--r--  1 hadoop hadoop  407 2014-06-02 15:32 id_rsa.pub
-rw-r--r--  1 hadoop hadoop  442 2014-06-02 15:08 known_hosts

4.A机登录B机。

[[email protected] ~]$ ssh 192.168.1.181
The authenticity of host ‘192.168.1.181 (192.168.1.181)‘ can‘t be established.
RSA key fingerprint is 00:a6:a8:87:eb:c7:40:10:39:cc:a0:eb:50:d9:6a:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.181‘ (RSA) to the list of known hosts.
Last login: Thu Jul  3 09:53:18 2008 from chenlb
[[email protected] ~]$

第一次登录是时要你输入yes。

现在A机可以无密码登录B机了。

小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)

想让A,B机无密码互登录,那B机以上面同样的方式配置即可。

参考:SSH-KeyGen 的用法 http://blog.163.com/[email protected]/blog/static/158584272007101862513886/

二、ssh免密登录失败的查错方法

1、查看ssh运行状态 

ps -e | grep ssh

如果发现 sshd 和 ssh-agent 即表明 ssh服务基本运行正常

2、生成公钥和私钥

ssh-keygen -t rsa -P ""

3、将公钥追加到文件

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

4、测试

ssh localhost

如果发现不用输入密码就可以登录那么 ssh无密码机制就算建立成功了。

5、失败原因之一:.ssh及其下属子文件的权限问题:

首选.ssh目录权限是700, 两个dsa 和 rsa的 私钥权限是600,其余文件权限是644.

下面列出.ssh目录及子文件的权限表:

drwx------  2 Hadoop hadoop 4096 2014-06-02 15:32 .
drwxr-xr-x 34 hadoop hadoop 4096 2014-06-02 15:06 ..
-rw-r--r--  1 hadoop hadoop 2252 2014-06-02 15:32 authorized_keys
-rw-------  1 hadoop hadoop  668 2014-06-02 15:11 id_dsa
-rw-r--r--  1 hadoop hadoop  615 2014-06-02 15:11 id_dsa.pub
-rw-------  1 hadoop hadoop 1675 2014-06-02 15:32 id_rsa
-rw-r--r--  1 hadoop hadoop  407 2014-06-02 15:32 id_rsa.pub
-rw-r--r--  1 hadoop hadoop  442 2014-06-02 15:08 known_hosts

6、.ssh的父目录的权限问题(我的问题就出现在这里):

.ssh的父目录文件权限应该是755,即所属用户的 用户文件 (/home下属的一个用户文件)。

时间: 2024-10-11 23:57:30

【Linux】ssh免密登录的相关文章

Linux ssh 免密登录设置成功,却不生效

在本机上使用非root账户,生成ssh 密钥,然后执行ssh-copy-id -i /home/用户/.ssh/id_rsa.pub 远程用户@远程ip,本机提示已经ssh公钥添加到远程主机用户/.ssh下. 执行ssh 远程用户@远程IP登录却仍然需要输入密码.显然免密没生效. 排查各种问题,比如本机是否开启免密登录,用户.ssh权限等等,都没找到问题所在,切换到root用户下,查看root用户的.ssh文件,发现有生成公钥,将其干掉.然后载重新1,2步凑,ok了. 原文地址:http://b

Linux SSH 免密登录

1.配置ssh (1)基本语法,ssh 另一台电脑的ip地址 [[email protected] ~]# ssh [email protected]192.168.1.220 The authenticity of host '192.168.1.220 (192.168.1.220)' can't be established. ECDSA key fingerprint is SHA256:alUAo2jDmPaBZ+doVQhEWERG8ap21Ibii0mpQko0d2s. ECDSA

linux(十)配置ssh免密登录实现

知道ssh的朋友应该知道它是用来干什么的,如果你不知道什么是ssh远程登录的话,可以去看一下我的上一篇博客,关于linux的网络基础的知识.备注:ssh是用于远端登入.执行ssh指令开启终端机阶段作业,并登入远端主机. 一.ssh远程登录 今天要和大家说的是,当我们一台客户机要远程登录到服务器的时候,输入密码才能登录成功. 过程流程图: 所以我们在想能不能我们不需要输入密码,直接使用ssh 用户名@服务器ip就可以登录呢? 二.ssh免密登录原理 看到这个图可能大家有一点蒙逼.我给大家解释一下.

ssh免密登录linux服务器

Ssh免密登录 sshd服务 sshd简介: SSH 密钥为登录 Linux 服务器提供了更好且安全的机制.运行 ssh-keygen 后,将会生成公私密钥对.你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁.两者匹配时,系统无需密码就能解除锁定. 官方维护文档:https://www.ssh.com/ssh/ 参考文档:https://www.cnblogs.com/ioveNature/p/7919115.html https://www.cnblogs.com

linux上ssh免密登录原理及实现

因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp(secure copy)是linux系统下基于ssh登录进行安全的远程文件拷贝的命令. # 传递文件到远程 scp local_file remote_username@remote_ip:remote_file # 传递文件夹到远程 scp -r local_folder remote_usern

【Linux】两台服务器ssh免密登录

背景: 有些场景可能用到两台服务器ssh免密登录.比如服务器自动化部署 开始准备:  服务器A  linux   ip: 192.168.1.1 服务器B  linux  ip: 192.168.1.2 第一步: 在服务器A 上 ,使用以下命令 生成秘钥 出现冒号(:)回车即可,要按三次回车.如果出现(yes/no)输入yes ssh-keygen -t rsa 红色标注部分就是 文件保存的路径 第二步: 在服务器A上 输入命令,指向服务器B的IP地址,用root账户 ssh-copy-id -

Linux的SSH免密登录认证过程研究

一.先看下SSH免密登录使用到的工具和生成的文件 工具:ssh-keygen用于生成秘钥文件,其中秘钥分为公钥和私钥.ssh-copy-id用于复制公钥文件到被控制机. 文件:ssh-keygen生成的秘钥文件有两个,放在~/.ssh/,id_rsa为私钥.id_rsa.pub为公钥 被控制机文件:通过ssh-copy-id复制的公钥在被控制机这个文件里,~/.ssh/authorized_keys id_rsa.pub公钥如下示例: ssh-rsa AAAAB3NzaC1yc2EAAAABIw

配置Linux系统ssh免密登录

因为要配置Hadoop集群服务,折腾了好久的ssh免密登录,简直要把人整疯了,在网上看了好多分享,都没搞定,最后看到一篇类似的,加上自己瞎蒙,终于成了,而且是超级简单,现在吐血总结一下. 我的是CentOS8虚拟机,干货来了. 第一步:vim /etc/ssh/sshd_config,将PubkeyAuthentication yes的注释去掉 第二步:systemctl status sshd.service,重启ssh服务 第三步:systemctl enable sshd.service,

Shell脚本实现SSH免密登录及批量配置管理

本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们通常还是工作在,几十台上百台服务器这样的环境,而使用ansible或者puppet这样的自动化运维工具则显得大材小用,并且最终的效果可能还不如几个小工具达到的效果好.像ssh免密登录在配合pssh这样的推送工具,在配合自动化配置脚本,可以说是即方便也使用.这一节将详细带大家以shell脚本的形式实现