从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)

    在需要登录的主机(openssh-server)上拥有帐号和口令,就可以登录到需要登录的主机(openssh-clients)。在client端和server端的数据传输都会被加密,但是不能保证正在连接的服务器就是真正需要连接的服务器。

第二种级别(基于密匙的安全验证)

    创建一对密匙,把公用密匙放在需要访问的服务器上(server端)。需要连接到openssh-server时,客户端用创建的密匙首先进行安全验证请求。服务器收到请求之后,在该服务器上用户主目录下寻找创建的公匙,然后把公钥和客户端发送来的秘钥请求进行验证。

==============================

    一对秘钥:公钥、私钥。使用公钥加密,私钥来解;使用私钥加密,公钥验证。公钥的作用:加密和验证;私钥的作用:加密和解密。

==============================

基于密钥的验证(无密码登录)

    sunny@hhh1 ==>> root@hhh2

1&2# rpm -qa | grep openssh-clients

1&2# rpm -qa | grep openssh

1$ ssh-keygen            (一路回车)

1$ ls ~/.ssh

1$ scp ~/.ssh/id_rsa.pub root@hhh2:/root/test/

1$ vi /etc/ssh/ssh_config

wKiom1ON3_XwLYFLAABMFQg_fDM703.jpg                                                 

        * ssh-keygen生成的正好是这个名字。前面是个“#”,表示这个是默认值。

1$ ssh hhh2

2# cat /root/test/id_rsa.pub > /root/test/loginhhh

2# chmod 700 /root/test

2# chmod 600 /root/test/logintest

2# vi /etc/ssh/sshd_config

wKiom1ON2vizCGD6AAB0OE5gKQE326.jpg                                      

2# /etc/init.d/sshd restart

2# exit

1# ssh hhh2

* 说明:

        设置无密码登录以后,首次登录需要确认一次登录。只需要输入 “yes” 。

上面的说明就是说如果在脚本中这么个应用虽然免去输入密码,可是还得输入“yes”来确认呢。如果有1w台主机需要登录呢。是不是要疯呢,答案是不必疯。

# vi /etc/ssh/ssh_config

wKioL1OjNIXx9jb9AAA2_EyemwQ400.jpg                                                 

该选项默认是 ask ,这么一个修改,便不再询问。……(* ssh_config)

* FAQ-01

        经常在配置完成后,发现登陆时提示需要密码。检查好几遍都没有发现那里出现错误。

    在上边的例子中是把公钥文件改名。而实际生产环境常常考虑到多人维护的问题,使用默认

    名称。这个时候文件名应该是:authorized_keys,出现问题的症结在于文件名错误地

    写成:authorized.keys。好像以“.”分隔文件名已经成为习惯了。

# cp id_rsa.pub authorized_keys

* FAQ-02

        配置上问题检查完了,也有无法登陆的问题。关闭防火墙,检查selinux试试看。

# sestatus

# vi /etc/selinux/config

# iptables -L

# iptables -F

# /etc/init.d/iptabes save