ssh通信原理
1.帐号密码验证 :
当用户向服务器发起SSH请求的时候,服务器将自己的公钥发给客服端
客服端将自己的帐号密码用服务器发来的公钥进行加密,
最后服务器端用自己的私钥对收到的数据进行解密。
但是无法确保中间人冒充服务器攻击这种情况。
2.第二种 公钥验证方式:
(1) 首先在客户端生成一对密钥(ssh-keygen);
(2) 并将客户端的公钥ssh-copy-id 拷贝到服务端;
(3) 当客户端再次发送一个连接请求,包括ip、用户名;
(4) 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:qwer;
(5) 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端;
(6) 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端;
(7) 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录。
(8)在过程中还会调用SSL生成密钥,并且用自己的私钥加密,发送给服务端,服务端接收到该私钥后,认证完成后,以后通信就用这个对称密钥加密。
配置文件
cd /etc/ssh 进入ssh目录
ls 查看信息
分析配置文件 sshd_config
实验 关闭ssh连接设置
把 PasswordAuthentication yes改成no
PasswordAuthentication no
esc退出编辑
:wq 保存即可
systemctl reload sshd.service 重新加载这个服务
systemctl restart sshd.service 从新开启这个服务
这是打开另个窗口 再次用root连接 会发现认证失败
文件传输方式 :ftp
1.Windows连接linux
可以通过远程工具 例如 xshell finalshell等等一系列工具进行传输
例如finalshell
2.linux—linux之间的文件传输
方式scp
首先了解scp的命令帮助 -h
-P 是端口
scp 【传输的目录或文件】 【user】@目标ip:【目标的目录或文件】
实验
在root虚拟机1 的root目录下创建 2222.txt 然后指令传输
cd root
touch 2222.txt
scp /root/2222.txt root@目标ip:/root/3
输入yes
去另一台机子上查看 传输成功
/etc/shadow(影子文件)
分析代表的含义
[root@fanwd etc]# cat shadow
root:$6$ToUI0ZAh$6EyF3m5CIYSiz0ciz.I0rE2mqv464Xu3aQrwbyw5u70FazcpuaqSVP.9P7U6vefq7z6UYjJq2Z7YWqOt79v7E0:18835:0:99999:7:::
bin:*:18353:0:99999:7:::
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
/etc/group文件解析
[root@fanwd etc]# cat group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
每一行代表一个用户组 :
组名:密码:GID:该用户组中的用户列表
/etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
fanwd:x:1000:1000:fanwd:/home/fanwd:/bin/bash
dockerroot:x:987:981:Docker User:/var/lib/docker:/sbin/nologin
解析每一段的含义
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell