赞
踩
ssh即安全外壳协议,是一种在不安全网络上提供安全远程登陆及其他安全网络服务的协议
默认端口22,sshd是根据ssh协议开发的一套远程登陆服务控制软件,且centos7系统中已经默认安装并启用。
ssh协议是基于非对称加密方法的,服务器和客户端都会生成自己的公钥和私钥。
1、服务器建立公钥:若远程服务器是新系统,第一次启动sshd时,它会主动去计算出需要的公钥和私钥。存放在/etc/ssh/ssh_host*1下,之后每回启动sshd服务的时候,系统会自动在此路径下查找公钥。等待连接请求。
2、客户端请求来凝结:Linux或者mac系统可以直接通过自带的shell连接,指令为ssh user@host或者直接使用ssh host。
3、服务器发送公钥给客户端:服务器接受到请求后吧公钥传给客户端使用。
4、客户端记录服务器公钥并计算自己的公钥:客户端将服务器传来的公钥记录在~/.ssh/know_hosts中,若是已经记录有该服务器的公钥,则对比是否一致,一致后就计算客户端自己的公私钥。
5、客户端发送自己的公钥给服务器:客户端将自己的公钥发送给服务器,这样服务器就有客户端公钥+服务器自己私钥,客户端就有服务器公钥+客户端自己私钥,组成了非对称加密系统。
6、开始双向加解密通信:服务器发送数据:用客户端公钥加密,客户端收到数据后用自己的私钥解密。客户端发送数据:用服务器公钥加密,服务器收到数据后用自己的私钥解密。

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
ssh缺点:
可伪造公钥
因为上述的过程没有进行身份上的验证所以容易遭到攻击,对数据进行劫持

sshd提供的两种相对安全的验证方法:
①口令认证(密码认证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击

②密钥认证(客户端生成可信任的公私钥对,公钥放在服务器,私钥放在本地)
你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
每一行为“关键词&值”的形式,其中“关键词”是忽略大小写的。
前边加有#的为注释,说明那些都是默认配置,如果要修改就把#取代然后在里边修改即可

修改sshd的配置文件
首先sshd的配置文件的路径是 /etc/ssh
所以要先进入目录cd /etc/ssh
然后用编辑器打开配置文件vi sshd_config
root被禁用:
cd /etc/ssh/
vi sshd_config
#PermitRootLogin yes(改为no)
systemctl restart sshd
切换用户:
su - root
su - 普通用户名
注:需加“-”,这样用户所有变量才能被切换
文件传输方式:
1.ftp
2.win ->linux Xshell
3.linux<->linux scp (基于ssh协议的安全传输命令)
本机与虚拟机的文件互传可以使用sftp
在Xshell软件中可以用sftp+IP地址的方法用sftp来建立连接
还可以使用快捷键ctrl+alt+f来快速执行
虚拟机与虚拟机的文件互传可以使用scp命令来完成
scp是基于ssh远程协议的安全传输命令
使用的方法是
1.scp[参数] 本地文件 远程账户@远程IP地址:远程目录
参数:可选的, -P 指定端口
-r 控制你传输的是一个文件还是目录
将本地文件传给另一个虚拟机
2.scp 远程账户@远程IP地址:远程目录 本地目录
下载另一个虚拟机的文件到本地
Linux特色: 多用户
Linux的身份识别: uid(u->user)
管理员uid值: 0
系统用户/虚拟用户/伪用户uid值: 1-999,不能登录
普通用户uid值: 1000-65535
查看uid命令: id
uid:不能冲突
用户组: 多个用户划分到同一个组
目的: 方便统一管理拥有相同权限用户。可赋权给整个组。
基本组: 系统创建的组与自己创建用户名相同eg. l l(前者是自己创建的普通用户名,后者是系统自动创建的基本组)
扩展组: 新建的用户组的某个用户可以加到其他用户组里,其他用户组就是这个用户的扩展组
总结: 一个用户只能有一个基本组但是可以有多个扩展组
1.输入账户,系统校验 /etc/passwd
2.核对密码 /etc/shadow 原理:校验uid是否相同
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:占位:uid:组id:用户信息(用户的简单说明):家目录:登陆用户时所用的shell环境
head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
shell环境为nologin即为系统用户,不能登录
head -1 /etc/shadow
root:$6$AadZ2Wc/rlL8e3Hi$zvCOgspRtEkUgrwY6m6Z6fEwBAl6oY7dC9ur3g0aWqvPLEq2Xj6A0oEFORKHbI9xYPWpKJtLNueaITFAkGr5f/::0:99999:7:::
用户名:加密的密码(*和!是不能登陆的):密码最后修改的时间(有的有,有的没有):两次密码修改的间隔:密码有效期:密码到期前的告警天数:密码到期之后宽限的天数::
/etc/passwd
/etc/shadow
/etc/group
useradd 用户名 (无密码)
passwd 用户名 (设置密码)
查看是否设置成功 cat /etc/shadow
userdel+用户名 删除用户

/etc/skel目录是用来存放新用户环境变量文件的目录,当我们新建用户时,这个目录下的文件会自动复制到新用户家目录下,该目录下文件都是隐藏文件(以.结尾的文件),通过修改,增加,删除该目录文件,为新用户提供统一、标准的初始环境。

验证:在/etc/skel新建readme.txt文件,然后新建用户,查看家目录
会出现的问题:
-bash-4.1$
-bash-4.1$
原因: 无家目录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。