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用户

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

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   //去掉此行开头的  # 号

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

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

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