CentOS下SSH免密码登录的配置

1.在客户机创建一对密钥文件,包括公钥文件(~/.ssh/id_rsa.pub),私钥文件(~/.ssh/id_rsa). 

2.把公钥放到服务器上(~/.ssh/authorized_keys),在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以免密码登录了 

原理: 一台服务口生存 公钥 复制另一台服务器上。
准备工作(root权限): 

1.检查ssh是否安装 

# rpm -qa | grep ssh 

如若安装显示如下: 

openssh-clients-5.3p1-81.el6.x86_64 
openssh-5.3p1-81.el6.x86_64 
openssh-server-5.3p1-81.el6.x86_64 
libssh2-1.2.2-7.el6_2.3.x86_64 

2.如果没安装,安装ssh 

# yum install -y openssh-server openssh-clients 

3.验证安装成功 

# ssh -V 

4.修改ssh配置 



  使用root登录修改配置文件: vi /etc/ssh/sshd_config,将以下的注释去掉,如下: 


  HostKey /etc/ssh/ssh_host_rsa_key 
  HostKey /etc/ssh/ssh_host_dsa_key 

  RSAAuthentication yes 
  PubkeyAuthentication yes 
  AuthorizedKeysFile  /root/.ssh/authorized_keys  (注意 authorized_keys路径 与 生成公钥和私钥 生存路径相同)

  如:

路径 /root/.ssh/authorized_keys 
 PasswordAuthentication设yes 

  IgnoreRhosts yes 

5.重启ssh服务 

# service sshd restart 

6创建普通用户: 

1.创建用户 

# useradd hadoop 

2.设置密码 

# passwd hadoop 

3.切换为普通用户 

# su - hadoop 

以root权限执行

hostnamectl set-hostname hadoop

7 生成公钥和私钥: 

7.1.生成公钥和私钥
# ssh-keygen -t rsa (生成公钥和私钥 )(要想无密登录,请不要输入密码,只需要回车)

# cd .ssh 

# ls 

生存目录(cd /root/.ssh) ls



在.ssh目录生成两个文件: 
id_rsa      :私钥 
id_rsa.pub  :公钥 


7.2.导入公钥到认证文件,更改权限 

   切换为root用户 

   # su - root 

   2.1 导入本机 

       根据配置文件/etc/ssh/sshd_config中的AuthorizedKeysFile项的取值:.ssh/authorized_keys,公钥需要导入到该文件中才能实现校验 

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


       # chmod 600 authorized_keys (注意 cd /etc/ssh )

   2.2 导入要免密码登录的服务器 (注意:把1台 复制另两台 )
       首先将公钥复制到服务器 

     2.2.1 scp /root/.ssh/id_rsa.pub root@192.168.45.134:/root/.ssh/id_rsa.pub

     2.2.2   cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

2.3 authorized_keys (注意:把1台 复制另两台 )

把每一台生存 id_rsa.pub 复制到同一个 authorized_keys 

注意 authorized_keys 好后要 复制 每台机子上(也就是说每台的 authorized_keys 必须 一到)

scp /root/.ssh/authorized_keys root@192.168.117.135:/root/.ssh/

如果没有 authorized_keys

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

    如果出错:

bash:scp:command not found  lost connection

yum -y install openssh-clients

成功后:

       然后,将公钥导入到认证文件(这一步的操作在服务器上进行) 

 2.2.1      #cat /home/id_rsa.pub >> ~/.ssh/authorized_keys 

       注意:如果你想要每台机子都免密码登录,那么把每台机子产生的公钥都添加到authorized_keys文件中 


    2.3 在服务器上更改权限 (每台 不设置权限 就要密码登录 坑人)
       # chmod 700 ~/.ssh 
       # chmod 600 ~/.ssh/authorized_keys  




注意: 
1) .ssh目录的权限必须是700 
2) .ssh/authorized_keys文件权限必须是600

 

8验证是否成功:

ssh-copy-id -i node1(node1 用户名称)

验证任意两台机器是否可以无密码登录,如下状态说明成功,第一次访问时需要输

入密码。此后即不再需要。

[ha@hadoop0 ~]$ ssh hadoop1

Last login: Tue Aug 11 00:58:10 2015 from hadoop2

 

 

重起

service sshd restart

 

常见问题1

ssh免密码登录后仍要输入密码的解决方法

1 目录文件的权限 

2目录的属主 查日志 :tail /var/log/secure -n 20

实现解决不了就三台机全部重新生存

1 删除之前 .ssh/里所有文件 生存:注册 1 每台都生存 

2 另两台从新命名: 

3 另两台从新命名(XX.pub文件  scp 第三台)

如:scp /root/.ssh/id2.pub root@192.168.45.134:/root/.ssh/

4 将3台 XX.pub 公钥文件  复制 到 authorized_keys

  cat /root/.ssh/id2.pub >> /root/.ssh/authorized_keys

常见问题2

[root@hadoop2 ~]# ssh hadoop1
The authenticity of host 'hadoop1 (192.168.45.131)' can't be established.
RSA key fingerprint is 4a:e6:62:48:c1:1b:f2:9b:94:81:53:76:6a:81:d2:ef.
Are you sure you want to continue connecting (yes/no)? yes
 

ssh -o StrictHostKeyChecking=no 192.168.45.135
 

ssh刚连接到其他服务器就闪退的问题。Connection to hadoop (hadoop 用户名) closed

修改配置文件:/etc/ssh/sshd_config

把PermitRootLogin改为yes,把UsePAM改为no

然后重新启动ssh服务

service sshd restart

还没解决

/usr/sbin/sshd -d  看看问题

debug1: sshd version OpenSSH_5.3p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Bind to port 22 on ::.
Bind to port 22 on :: failed: Address already in use.

 

9 退出SSH

 exit 用户(SSH 用户)
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值