简介
SSH 为 Secure Shell 的缩写, 由 IETF 的网络工作小组 (Network Working Group) 所制定; SSH 为建立在应用层和传输层基础上的安全协议. SSH 是目前较可靠, 专为远程登录会话和其他网络服务提供安全性的协议. 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题. SSH 最初是 UNIX 系统上的一个程序, 后来又迅速扩展到其他操作平台. SSH 在正确使用时可弥补网络中的漏洞. SSH 客户端适用于多种平台. 几乎所有 UNIX 平台 - 包括 HP-UX,Linux,AIX,Solaris,Digital UNIX,Irix, 以及其他平台, 都可运行 SSH.
实验过程
基于口令的安全验证
准备两台 Linux 系统的虚拟机, 一台做 ssh 服务器, 另一台做客户机用来远程登录服务器, 首先 ssh 服务是 Linux 系统默认安装好的, 我们可以直接进行配置文件的修改
- [root@linux6-1 ~]# vim /etc/ssh/sshd_config //ssh 的配置文件
- #Port 22 //ssh 的端口号
- #PermitRootLogin yes // 默认允许 root 远程连接, 但这里是注释掉的, 所以我们要删掉 #, 把后面的 yes 改为 no
此时我们重启 ssh 服务, 使用另一台 Linux6-4 来进行登录, 但是这里我们要先创建一个用户用来登录, 所以先创建用户, 而且要允许这个用户远程登录
- [root@linux6-1 ~]# vim /etc/ssh/sshd_config
- AllowUsers zhangsan // 在刚刚修改的 permitrootlogin 那一段的后面加入允许 zhangsan 登录
- [root@linux6-1 ~]# useradd zhangsan
- [root@linux6-1 ~]# echo "123123" | passwd --stdin zhangsan
更改用户 zhangsan 的密码 .
passwd: 所有的身份验证令牌已经成功更新.
好了, 用户创建好之后我们就可以使用另一台 Linux6-4 进行登录了
- [root@rhel6-4 ~]# ssh zhangsan@192.168.100.4 // 进行远程登录
- zhangsan@192.168.100.4's password: // 输入 zhangsan 用户的密码
- [zhangsan@linux6-1 ~]$ // 然后就可以看到使用 zhangsan 用户在 Linux6-4 上登录了 Linux6-1 的系统了
但是这里有一个问题了, 如果我们知道 root 的密码, 可以使用 zhangsan 用户直接切换到 root 用户, 这样是不安全的
[zhangsan@linux6-1 ~]$ su - root
密码:
[root@linux6-1 ~]#
所以我们要进行配置文件的修改, 启用 pam 认证, 在创建一个 lisi 用户, 把 zhangsan 用户添加到 wheel 组里, 然后就会看到 zhangsan 可以切换到 root, 而 lisi 就不能切换到 root 用户了
- [root@linux6-1 ~]# useradd lisi // 创建 lisi 用户
- [root@linux6-1 ~]# echo "123123" | passwd --stdin lisi
更改用户 lisi 的密码 .
passwd: 所有的身份验证令牌已经成功更新.
[root@linux6-1 ~]# gpasswd -a zhangsan wheel // 把 zhangsan 用户添加到 wheel 组
Adding user zhangsan to group wheel
- [root@linux6-1 ~]# vim /etc/pam.d/su // 进入 pam 的配置文件启用 pam 认证
- #auth required pam_wheel.so use_uid // 将这条前面的 #删除, 表示启用 pam 认证
- [root@linux6-1 ~]# service sshd restart // 重新启动 ssh 服务
停止 sshd: [确定]
正在启动 sshd: [确定]
此时在客户机上使用 zhangsan 和 lisi 用户进行登录, 会看到 zhangsan 可以切换到 root, 而 lisi 不能进行切换
基于密匙的安全验证
首先我们要在配置文件中开启密钥验证登录
- [root@linux6-1 ~]# vim /etc/ssh/sshd_config
- #PubkeyAuthentication yes
- #AuthorizedKeysFile .ssh/authorized_keys // 去掉前面的 #注释, 表示开启公钥, 私钥验证
- [root@linux6-1 ~]# service sshd restart
停止 sshd: [确定]
正在启动 sshd: [确定]
然后在客户机上产生公钥和私钥
先在客户机上创建一个 zhangsan 用户的映射用户 zhaosi
- [root@rhel6-4 ~]# useradd zhaosi
- [root@rhel6-4 ~]# echo "123123" | passwd --stdin zhaosi
更改用户 zhaosi 的密码 .
passwd: 所有的身份验证令牌已经成功更新.
- [root@rhel6-4 zhaosi]# su - zhaosi // 切换到 zhaosi 用户
- [zhaosi@rhel6-4 ~]$
- [zhaosi@rhel6-4 ~]$ ssh-keygen -t rsa // 生成密钥
Generating public/private rsa key pair.
- Enter file in which to save the key (/home/zhaosi/.ssh/id_rsa):
- Created directory '/home/zhaosi/.ssh'.
- Enter passphrase (empty for no passphrase): // 输入密钥密码, 如 123456
Enter same passphrase again:
Your identification has been saved in /home/zhaosi/.ssh/id_rsa.
Your public key has been saved in /home/zhaosi/.ssh/id_rsa.pub.
The key fingerprint is:
07:2e:d3:12:ba:e8:d4:16:1e:82:87:1f:9d:9a:77:7c zhaosi@rhel6-4
- The key's randomart image is:
- +--[ RSA 2048]----+
- | |
- | |
- | . . |
| o . o + . |
- |o + * + S . |
- | o O = + . |
- | * * o E |
| o o . . |
- | . |
- +-----------------+
就会看到产生了这样一个 2048 的密钥
然后我们可以查看密钥产生在哪里
- [zhaosi@rhel6-4 ~]$ cd /home/zhaosi
- [zhaosi@rhel6-4 ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla .ssh // 密钥就在. ssh 目录下
- [zhaosi@rhel6-4 .ssh]$ ls
- id_rsa id_rsa.pub
然后我们通过 zhaosi 用户将私钥发送给 zhangsan 用户
- [zhaosi@rhel6-4 .ssh]$ ssh-copy-id -i id_rsa.pub zhangsan@192.168.100.4
- [zhaosi@rhel6-4 .ssh]$ ssh-copy-id -i id_rsa.pub zhangsan@192.168.100.4 // 这里输入的是 zhangsan 用户的密码
然后我们在切换到 ssh 服务器 (也就是 linux6-1) 去查看收到的私钥文件
- [root@linux6-1 ~]# cd /home/zhangsan/.ssh
- [root@linux6-1 .ssh]# ls
- authorized_keys
- [root@linux6-1 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4MH8kr9+D9uy8J+I8qldCrA6zFxzyRS1AnfOofHP0iDr6rS1nlKzMPIsQG1B3TWPhqbTEwtiiiS5omsCqoc4r79nOhwH8ys7bc+OPJIZtVai3PLepCD8w3LF5hjo8Q3j+WAiy5x2ZTooeVhTLYkmCJaz4/SsujwvbmsJeaxWphHu5Ka/6MNRH+zIzlF4MdRN6XSyI39ubbpOBqwRExXEIGnpw9OF31hFUBYMSoYz/aAHa3j+/CwOwgEXgtOVQNNksyjByvfQA2J5oMuJPSriMi9GDrN0mgw/7iPkXC9vmP5Hd/rniZvwz6UNHm+Quse4q9UIHwximCNPuIeuNl1VYQ== zhaosi@rhel6-4 // 这里就是收到的私钥文件, 在最后面可以看到是 rhel6-4 的 zhaosi 用户发送过来的
此时我们在用 zhangsan 用户在客户机上登录只用输入 123456 就可以了
来源: http://blog.51cto.com/13659301/2118823