SSH无密码验证登录的实现

柔光的暖阳◎ 2022-08-13 11:58 337阅读 0赞
  1. 前期准备:

    检查是否安装了SSH服务和rsync服务(rsync是一个远程数据同步工具,可以通过LAN/WLAN快速同步多台主机之间的文件)

    rpm -qa | grep openssh

    rpm -qa | grep rsync

我的Centos 5.6下的显示:
www.2cto.com

20130129111424714.png

如果没有安装则执行一下安装:

yum install ssh

yum install rsync

service sshd restart 启动服务
www.2cto.com

  1. SSH无密码验证的原理

    Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行 加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。

  1. 实际操作过程

    3.1 Master实现无密码登录Salve

    1> 以root用户登录,更改SSH的配置文件

    vi /etc/ssh/sshd_config

    20130129111424335.png

    RSAAuthentication yes # 启用 RSA 认证

    PubkeyAuthentication yes # 启用公钥私钥配对认证方式

    AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

    重启SSH服务: service sshd restart
    www.2cto.com

    2> 以新建用户hadoop身份登录

    su - hadoop

    ssh-keygen -t rsa 生成密钥文件,一切按默认的方式生成,密钥文件生成后默认存放位置为/home/hadoop(你的用户名)/.ssh

    20130129111424342.png

    查看生成文件: ll .ssh 下面的这两个即为生成的密钥对

    20130129111425430.png

    将id_rsa.pub加到授权的key里面去:cat id_rsa.pub >> authorized_keys

    20130129111425237.png

    修改authorized_keys的权限,(这一步很重要不然的话,SSH时仍然需要密码)

    chmod 600 authorized_keys

    20130129111426775.png

    查看本机是否可以SSH无需密码登录: ssh localhost

    20130129111426105.png

    OK , 以上证明本机登录成功。

    接下来要做的就是将Master的公钥id_rsa.pub复制到Salve上去,并加入到授权的key中。

    scp ~/.ssh/id_rsa.pub hadoop@192.168.171.133:~/

    20130129111426864.png

    由于首次登录还没有添加认证,这次仍然会提示输入密码

    以hadoop身份登录Salve节点(注意此前意见以root身份对ssh的配置进行修改,方式同上)

    20130129111426755.png

    确认文件存在

    如果不存在.ssh 则创建文件夹.ssh,并将权限修改为700,这一步非常重要因为默认创建的.ssh文件夹的权限为700,手工创建不修改权限的话不能成功,修改权限后将该

    id_rsa.pub添加到授权的key中:

    mkdir .ssh

    chmod 700 .ssh

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

    修改authorized_keys的权限为600

    chmod 600 ~/.ssh/authorized_keys

    进入Master节点,检查能否登录Salve节点:

    ssh 192.168.171.133

    20130129111426681.png

    OK , 在Master上无密码登录Salve成功

3.1.2 同样在Savle上生成密钥对,并添加到Master授权中,就可以实现相互无密码登录了。

ssh-keygen -t rsa

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

scp ~/.ssh/id_rsa.pub hadoop@192.168.171.131:~/

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

验证登录即可。

注意几点: www.2cto.com

1> SSH的配置文件一定要修改,而且修改后要重启

2> 认证文件一定要采用追加方式:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3> authorized_keys文件的权限一定要修改为600

4> .ssh的文件如果是手动创建的话权限一定要修改为700

发表评论

表情:
评论列表 (有 0 条评论,337人围观)

还没有评论,来说两句吧...

相关阅读

    相关 linux ssh密码登录

    使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id\_rsa.pub; 私钥文件:

    相关 实现ssh密码登录

    这里所说的ssh是指OpenSSH SSH客户端,是用于登录远程主机,并且在远程主机上执行命令。它的目的是替换rlogin和rsh,同时在不安全的网络之上,两个互不信任的主机之

    相关 SSH 密码登录 Linux

    SSH Key的知识 Linux系统有一个钥匙环(keyring)的管理程序.钥匙环受到用户登录密码的保护.当你登录Linux系统时,会自动解开钥匙环的密码,从而可访问钥