SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)
SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。SSH只是一种协议 ,它是自由软件,应用非常广泛。

准备两台linux虚拟机:
服务器:192.168.100.101
客户机:192.168.100.102

1:客户机
    #ssh root@192.168.100.101    //在linux远程访问192.168.100.101 
    sshd服务是默认允许root用户登录的  但这是非常不安全的
    普遍的做法是:先登录普通用户 根据实际需求使用su 切换root用户

linux redhat6.5 构建SSH服务及SSH构建密钥对验证

2:服务器
下面设置  禁止root用户登录
vim /etc/ssh/sshd_config       //(ssh主配置文件)
 PermitRootLogin no      // 拒绝root 用户登录 
 Allowusers zzz zkc   //只允许zzz  zkc 用户登录

 service sshd restart    //重启服务

linux redhat6.5 构建SSH服务及SSH构建密钥对验证
linux redhat6.5 构建SSH服务及SSH构建密钥对验证

linux redhat6.5 构建SSH服务及SSH构建密钥对验证

3:服务器
创建一个用户zzz   (我系统里有个zkc用户了) 
但此时zzz  zkc  用户 都能使用su  切换到root用户  所以不是很安全
所以下面配置 : 禁止普通用户切换root用户  只给zzz 用户切换root 的权限
#gpasswd -a zzz wheel     //将zzz 加入wheel 
#vi /etc/pam.d/su          //认证配置
 auth required pam_wheel.so use_uid   //去掉此行开头的  # 号

linux redhat6.5 构建SSH服务及SSH构建密钥对验证

4:到客户机 上测试下                                                  成功
    ssh @root192.168.100.101   无法登录
    ssh @zkc192.168.100.101  可以登录  无法切换root
    ssh @zzz192.168.100.101 可以登录 可以切换

linux redhat6.5 构建SSH服务及SSH构建密钥对验证

5:切换到ssh服务器上 
        配置SSH密钥
    #vi /etc/ssh/sshd_config     //编辑sshd_config
    PubkeyAuthentication yes    //启用密钥对验证
    AuthorizedKeysFile    .ssh/authorized_keys   //指定公钥数据文件

    service sshd restart  //重启sshd服务

linux redhat6.5 构建SSH服务及SSH构建密钥对验证
linux redhat6.5 构建SSH服务及SSH构建密钥对验证

6:回到客户机上
     useradd benent   //创建用户benet
     passwd benet       //设置benet用户密码
     su - benet     //切换用户到benet
    ssh-keygen -t rsa //创建密钥对
    (设置私钥短语  确认私钥短语)
    ls -a /home/benet/.ssh  // 查看私钥位置(密钥文件为隐藏文件 用 -a)
    cd /home/benet/.ssh   //到私钥存放目录

linux redhat6.5 构建SSH服务及SSH构建密钥对验证

7:ssh-copy-id -i id_rsa.pub zhangsan@192.168.100.101 //将公钥上传到服务器 
(   公钥在服务器的 /home/zzz/.ssh 下面)
ssh zzz@192.168.100.101   //使用ssh登录服务器上的zzz 用户 
(此时只要输入私钥短语就能登录了)

//在客户机上设置ssh 代理功能 不需要设置密码就能访问//
ssh-agent bash 
ssh-add   

linux redhat6.5 构建SSH服务及SSH构建密钥对验证