实现ssh的无password登录
Posted mfmdaoyou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现ssh的无password登录相关的知识,希望对你有一定的参考价值。
这里所说的ssh是指OpenSSH SSHclient。是用于登录远程主机。而且在远程主机上运行命令。它的目的是替换rlogin和rsh,同一时候在不安全的网络之上,两个互不信任的主机之间,提供加密的、安全的通信连接。X11连接和随意TCP/IPport均能够通过此安全通道转发。
在RedHat 6.1中,默认安装的OpenSSL是一种比較常见的SSH服务端和client软件。默认port是22。
SSH服务端事实上是一个守护进程(daemon),在后台执行并对应来自client的连接请求。服务端通常是sshd进程,提供了对远程连接的处理。一般包含公共密钥认证、密钥交换、对称密钥加密和非安全连接等。
SSHclient程序包含ssh程序。及scp(远程拷贝)、slogin(远程登录)、sftp(安全文件传输)等其它的应用程序。
在有些情况下,须要实现ssh的无password登录。或者称为免password登录。
比方:Hadoop的伪分布式模式部署、全然分布式模式部署。
配置
有两台主机:主机A:192.168.1.132,主机B:192.168.1.133,须要配置主机A无password登录主机A、主机B。
生成私钥、公钥
在主机A上:
$ cd ~/.ssh(假设没有改目录。直接创建一个) $ ssh-keygen -t rsa
上面的ssh-keygen命令中。參数-t是生成密钥的方式,有三种方式:协议版本号1的rsa1、协议版本号2的rsa和dsa。
通常选rsa或dsa。既安全。又省事。
这个时候会打印一些运行结果及交互操作。一路回车就可以。
Generating public/private rsa key pair. Enter file in which to save the key (/home/lxh/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/lxh/.ssh/id_rsa. Your public key has been saved in /home/lxh/.ssh/id_rsa.pub. The key fingerprint is: 2e:34:7c:3a:be:e4:3b:93:2f:1d:32:4f:2d:fe:13:a1 [email protected] The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | . . | | + So . | | .o=E o | | =O.o . | | +=o+ . | | =B.... | +-----------------+
生成存放RSA/DSA的公钥
直接复制生成的id_rsa.pub文件就可以。
$ cp id_rsa.pub authorized_keys $ chmod 600 authorized_keys
按理说此时就能够无password登录本机了,即通过命令:
$ ssh localhost
第一次须要输入一个yes,由于须要在第一次登录该主机时记录实用户登录。之后就不会出现了。
复制公钥
然后将公钥文件authorized_keys复制到主机B的同样位置上。
$ scp authorized_keys 192.168.1.133:~/.ssh
由于已经在主机A上改动过authorized_keys的权限,一般主机B上也是600格式。假设不是。就改动主机B上的authorized_keys文件权限为600。
$ chmod 600 authorized_keys
普通情况下,能够通过主机A无password登录主机A和主机B了。
FQA
登录时出现“Agent admitted failure to sign using the key.”
在~/.ssh文件夹中运行
$ ssh-add
出现以下的信息,就成了:
Identity added: /home/lxh/.ssh/id_rsa (/home/lxh/.ssh/id_rsa)
假设提示以下的信息:
Could not open a connection to your authenticationh agent
就运行:
ssh-agent bash
没有错误信息。但须要输入password登录
须要查看一下.ssh文件夹和authorizedkeys文件的权限,须要.ssh文件夹的权限为700,authorizedkeys文件的权限为600。假设主机A连接主机B,就在主机B上运行:
$chmod 700 ~/.ssh $chmod 600 ~/.ssh/authorized_keys
ssh代理未开启
通过命令查看ssh代理是否开启
$ ps -ef|grep ssh-agent
假设开启了,直接kill掉,然后启动ssh代理。
$ ssh-agent
假设还是不行。就重新启动ssh服务:
# service sshd restart(须要root权限)
以上是关于实现ssh的无password登录的主要内容,如果未能解决你的问题,请参考以下文章