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

SSH相关的安装包:

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

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

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

 

基于密钥的认证:

1、使用到的命令:

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

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

2、客户端的操作:

        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  [email protected]

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

3、设置代理ssh-agent

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

        ssh-agent bash   启动代理

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

4、实现多台客户端的免密登录

    以上介绍的都是两台机器之间的免密登录,每台机器对应家目录下的.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文件中,就可以实现多台客户端同时免密登录服务器了。