ssh基于密钥认证的登陆方式

      (ssh:secure shell, protocol, 22/tcp,安全的远程登陆)            
shell

SSH相关的安装包:安全

    openssh-clients.x86_64 SSH的客户端安装包bash

    openssh-server.x86_64  SSH的服务器端安装包服务器

    openssh.x86_64  SSh的通用设置,服务于服务器端和客户端ssh

 

基于密钥的认证:tcp

一、使用到的命令:ide

a)  ssh-keygen    生成ssh认证的私钥和公钥加密

b)  ssh-copy-id    ssh认证的公钥从客户端拷贝到服务器端生成authorized_keys文件,该文件中存放公钥。spa

二、客户端的操做:代理

        a)  生成密钥对:

     非交互式:ssh-keygen –t rsa [-P ' ' ] [-f "~/.ssh/id_rsa"]

        -t:指定加密的方式

        -P:指定加密的密码

        -f:指定生成的私钥地址

   (该方式生成的私钥在用于认证的时候须要输入指定的密码)

    交互式:ssh-keygen (直接回车就能够了)

    (该方式会进行各类确认,提示是否生成相应的文件。)

       b) 把公钥文件传输至远程服务器对应用户的家目录:

        ssh-copy-id [-i [identity_file]][user@]host

    例如:ssh-copy-id  root@172.17.254.244

    会自动生成authorized_keys文件,这里是存放的id_rsa.pub文件中的公钥。

三、设置代理ssh-agent

    若是密钥设置了密码,每次输入都很麻烦,这时候能够用ssh-agent代理,只要输入一次口令,以后均可以用。退出会话以后就失效。

        ssh-agent bash   启动代理

       ssh-add  添加代理密码(这个是交互式命令,若是私钥有密码,会自动提示输入密码。)

四、实现多台客户端的免密登陆

    以上介绍的都是两台机器之间的免密登陆,每台机器对应家目录下的.ssh/目录下只有一个authorized_keys文件,如何实现同一台服务器能够多台客户端免密登陆呢?

根据以前咱们介绍的,在authorized_keys这个文件中存放的是客户端ssh认证的公钥,因此咱们能够参考其中的格式,将客户端ssh认证的公钥所有存放到其中便可。

    固然,咱们就不能重复使用ssh-copy-id这个命令了,不然将会形成覆盖,达不到预期的效果。

  a) 将客户端对应家目录中.ssh/目录下生成的id_rsa.pub文件拷贝到服务器端

    scp ~/.ssh/id_rsa.pub 172.17.253.23

  b) 将从客户端拷贝过来的公钥内容,添加到authorized_keys文件中,具体作法以下:

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

  c)只要将每一台客户端的公钥都添加到服务器端authorized_keys文件中,就能够实现多台客户端同时免密登陆服务器了。

相关文章
相关标签/搜索