文档章节

ssh 双机互信:免密码登录设置步骤及常见问题

大数据之路
 大数据之路
发布于 2014/07/01 02:45
字数 1280
阅读 4168
收藏 214

在 linux 系统管理中,设置免密码登录,进行机器的批量管理是最常用的一个方法。比如针对几十甚至上百台线上机器,通常我们会设置一台“发布机”作为中央控制机对其它线上机器免密码登录,然后进行软件、配置文件的分发、更新、部署。当然了,针对上面的问题,解决方案并非最优且唯一,比如你也可以用 expect 模拟自动输入来完成自动登录验证这一过程,或者用现在一些开源的软件自动化配置和部署工具,比如 Puppet,但这都不在本文的讨论范畴,今天咱们要说的就是这种最原始、最有效、最直接的方式:免密码登录。

(1)问题:

假设:现有2台机器

1、个人机192.168.1.110

2、服务器192.168.1.112

要使110无需密码通过ssh登入112

(2)步

1、创建密钥

miao@u32-192-168-1-110:~/.ssh$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): (忽略:直接回车即可)
Enter same passphrase again: (忽略:直接回车即可)
Your identification has been saved in /home/miao/.ssh/id_rsa.
Your public key has been saved in /home/miao/.ssh/id_rsa.pub.
/******************

2、复制公密到服务器

miao@u32-192-168-1-110:~/.ssh$ scp id_rsa.pub miao@192.168.1.112:/home/miao/.ssh/192.168.1.110
miao@192.168.1.112's password: 
id_rsa.pub                                                                   100%  404     0.4KB/s   00:00    
miao@u32-192-168-1-110:~/.ssh$

3、添加公密到192.168.112的信任区域

miao@debian-192-168-1-112:~/.ssh$ cat 192.168.1.110 >> authorized_keys
miao@debian-192-168-1-112:~/.ssh$

注: 2、3两步可由命令ssh-copy-id一步到位

miao@ubuntu-192-168-1-110:~/.ssh$ ssh-copy-id miao@192.168.1.112
#如果错误就用 
ssh-copy-id -i ~/.ssh/id_rsa.pub IP
Password:
Now try logging into the machine, with "ssh 'miao@192.168.1.112'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

4、测试

此时整个步骤已经完成,你可以尝试 ssh ip 或者 /etc/hosts 中的主机名试试。

(3)可能遇到的问题

1、在使用 ssh-copy-id 错误提示 

ssh-copy-id:/usr/bin/ssh-copy-id: ERROR: No identities found

表现:

# 公钥,私钥已经生成,执行上述命令完毕出现如下错误:

$ ssh-copy-id remote-machine

/usr/bin/ssh-copy-id: ERROR: No identities found

解决方法:

g 之发现缺少公钥路径,通过 -i 加上即可:

$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote_ip

2、ssh ip 可以成功登录,ssh hostname 却失败

表现:

ssh hostname

ssh: connect to host localhost port 22: Connection refused

解决方法:

看下对方的主机名是不是在 /etc/hosts 文件中和 ip 做了映射,没有就加上即可。

3、ssh 的配置目录权限问题

由于 ssh 的权限直接关系到服务器的安全问题,因此 ssh 每次读取配置都会校验相关文件夹和文件的权限,以防止权限过大对外暴露。

表现:

设置了.ssh目录,在authorized_keys设置了key后登录还提示需要输入密码。

解决方法:

注意权限,.ssh权限700,authorized_keys权限600,就KO啦!

chmod 700 ~/.ssh/

chmod 600 ~/.ssh/authorized_keys

4、ssh localhost:publickey 授权失败

sudo vi /etc/ssh/sshd_config

RSAAuthentication yes  
PubkeyAuthentication yes  
AuthorizedKeysFile     .ssh/authorized_keys 

service sshd restart

注:ssh可同时支持publickey和password两种授权方式,publickey默认不开启,需要配置为yes。 
如果客户端不存在.ssh/id_rsa,则使用password授权;存在则使用publickey授权;
如果publickey授权失败,依然会继续使用password授权。
不要设置 PasswordAuthentication no ,它的意思是禁止密码登录,这样就只能本机登录了!

5、ssh localhost:Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

vi /etc/selinux/config  
SELINUX=disabled  

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

最后重启你的 linux 执行 ssh localhost

6、ssh localhost:需要密码

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

7、ssh ip 或 hostname 均提示:connection refused

  • 目标主机的ssh server端程序是否安装、服务是否启动,是否在侦听22端口;
  • 是否允许该用户登录;
  • 本机是否设置了iptables规则,禁止了ssh的连入/连出;

具体请参考: http://hi.baidu.com/leejun_2005/item/bfc0ded296cb8ebf32db907e

8、kerberos 下 ssh localhost 启动 hadoop 需要密码

这个时候编辑 .k5login 添加 host/localhost@58OS.ORG 已经无效,需要在本地创建公钥与秘钥。

1. ssh-keygen -t rsa
   # Press enter for each line 
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod 0755 ~ && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

(4)最后的问题

本文介绍的建立基于免密码登录,双机互信的管理方式简单、直接,但是安全就是个问题了,稍有不慎容易被一锅端,建议加上防火墙的端口、ip 策略,有条件的话试试动态口令,这样会更稳妥些。再有就是当机器规模达到上百、上千台的时候,如果对文件数据、机器状态的实时同步、一致性的要求很高的时候,这种管理方式的弊端就出来了。

(5)Refer:

[1]  ssh-copy-id帮你建立信任

http://blogread.cn/it/article/6103?f=wb 

[2]  ssh无密码登入设置 ssh-keygen ssh-copy-id

http://www.lvtao.net/server/54.html

[3]  一次由SELinux引起的ssh公钥认证失败问题

http://www.cnblogs.com/qcly/archive/2013/07/27/3219535.html 

[4] How to ssh to localhost without password?

https://stackoverflow.com/questions/7439563/how-to-ssh-to-localhost-without-password 

© 著作权归作者所有

共有 人打赏支持
大数据之路
粉丝 1518
博文 516
码字总数 342870
作品 0
武汉
架构师
加载中

评论(7)

n
newnoder
很方便啊
程序那些年
程序那些年
收藏一下
NeoYoung
NeoYoung
mark~~
王爵nice
王爵nice
mark
陈亦
陈亦
怎么不说说用户名不同的情况下?
n
newnoder
nice
翔宇0720
学习了
基于Hadoop1.2.1完全分布式集群的部署

一、准备工作 同一个局域网中的三台Linux虚拟机,发行版本均使用64位CentOS6.3,主机是 Windows 10 64位操作系统;通过 vmware workstation 实现三台虚机,这样就形成了一个以物理机为DNS服务...

灯下黑鬼吹灯
2016/11/25
97
0
SSH 远程执行命令二三事

原文出处:koala bear 有时侯,利用 ssh 在本地执行远程机器的命令可以便捷地处理某些重复工作。我们希望做到: 免手工输入密码 支持执行多个命令,执行 shell 脚本 支持执行 sudo 的命令 免...

koala bear
01/29
0
0
服务器互信简单步骤

A:10.128.10.117 B:10.128.9.21 1、ssh-keygen -t rsa 2、ssh-copy-id -i ~/.ssh/id_rsa.pub 10.128.9.21(要和当前服务器建立互信的服务器ip地址)。按要求输入账号密码。 3、ssh 10.128.9....

Mr_Tea
2016/09/01
13
0
使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录

在配置Hadoop集群分布时,要使用SSH免密码登录,假设现在有两台机器hadoop@wang-PC(192.168.10.100),作为A机,hadoop@chen-PC(192.168.10.107),作为B机。现想hadoop@wang-PC通过ssh免密码登...

iphoenix
2016/03/17
82
0
linux下sshd_config的StrictModes参数

今天在两台机器A和B上设置免密码登录,A机是Centos6.5,B机是Centos7,我想通过A机免密码登录到B机,在两台机器上设置好公钥和私钥后,在A机上通过ssh连接B机,每次都是要让我手动输入密码,以...

yzy121403725
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中国移动蔡谦:5G传输准备就绪

目前5G已成业界热议话题,在即将到来的万物互联时代,5G是非常关键的技术。且5G相比4G,业务场景多种多样,对5G承载网带来巨大挑战。5G传输,承载先行并不仅仅是一个口号。当前5G承载网的部署...

linux-tao
34分钟前
4
0
维护“修理权”,苹果使用专有软件工具来修复MacBook Pro和iMac Pro

根据上月发给苹果授权服务提供商的一份文件,苹果公司正在使用新的专有软件诊断工具来修复MacBook Pros和iMac Pros,如果不用专有软件工具来修复关键部件,将会导致“系统失效和修复不完整”...

linuxCool
今天
2
0
cacti监控安装

cacti是用PHP实现的一个软件,它用snmp服务获取数据,然后用rrdtool存储和更新数据,并生成图表展示。比较适合用于交换机、路由器的网络监控,插件众多,可图示化显示网络状况。 cacti官方推...

hiwill
今天
4
0
shell特殊符号、cut、sort、uniq、wc、tee、tr、split命令

10月15日任务 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 cut 命令 cut作用:截取字符串 用法如下:cat /etc/passwd |head -2 |cut -d ...

hhpuppy
今天
4
0
Springboot实现filter拦截token验证和跨域

背景 web验证授权合法的一般分为下面几种 1使用session作为验证合法用户访问的验证方式 使用自己实现的token 使用OCA标准 在使用API接口授权验证时,token是自定义的方式实现起来不需要引入其...

funnymin
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部