练习1、ssh免密登录:准备两台Linux虚拟机,第一台可以免密登录到第二台机器;ssh禁止root用户远程登录
原理:
基于密钥的认证(publickey认证):客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorizedkeys文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorizedkeys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。
Ⅰ、先做好准备工作:安装ssh服务 -- 安装包包名为 openssh-server;
【服务端1ip192.168.174.128 服务端2ip192.168.174.131】
Ⅱ、在服务器1上生成密钥对 ssh-keygen -t [key的类型,常用rsa] -b [指定密钥长度bit位,2048,4096]
#产生ssh的密钥对、将密钥对中的公钥放到服务器上的:root用户家目录下的.ssh/authorized_keys(注意是否存在,反正我没找到)【老师说这个文件本身没有是正常的】
机器1的.ssh/目录👆
Ⅲ、复制该公钥文件到服务端2的该目录下:
[root@web ~]# scp /root/.ssh/id_rsa.pub root@192.168.174.131:/root/.ssh/authorized_keys
或者
[root@localhost .ssh]# ssh-copy-id -i root@192.168.174.131【我用这个成功了】
机器2的.ssh/目录👇
Ⅳ、验证客户端机器1能否ssh免密登录服务端机器2【验证成功】
Ⅴ、最后一个要求是ssh禁止root用户远程登录
ssh配置文件:/etc/ssh/sshd_config【又犯错了,配置目录是sshd不要打成ssh了】
修改服务端的配置:
👇这句是允许管理员远程登录,给他改成no
【好了,现在登不上root了密码输对了也不行】
记得重启服务
练习2、http:配置基于不同IP的访问不同的站点,要求默认首页文件为 first.html
原理:
Listen 80 监听的是80端口,并没有说监听哪个ip所以监听这台机器上所有ip,所以配置文件加载的目录都是同一个
暂时的情况是:不同的IP访问到的是相同的内容
原因是:我们在web服务器监听所有的IP,并且提供一样的访问目录(站点)
想让不同ip访问不同站点👇
产生了虚拟主机(virtualhost)的概念 -- 即在一台物理主机上面,虚拟出来多个web服务器,提供多个站点的访问
①基于不同IP,提供不同虚拟的web服务器
②基于相同的IP不同的端口,提供不同的虚拟的web服务器
【配置文件介绍👇】
<VirtualHost>结束
# *:80-> *指所有IP,:后跟端口号80
# *可以用明确IP来代替,端口号可以自己定义(限制:使用这个端口,记得一定要先监听这个端口号: Listen Port)
# 管理员邮箱
ServerAdmin webmaster@dummy-host.example.com
# 指定访问web服务器访问的目录是哪个目录
DocumentRoot "/var/www/dummy-host.example.com"
# 服务器的名字
ServerName dummy-host.example.com
# 服务器别名
ServerAlias www.dummy-host.example.com
# 错误人日志
ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
# 自定义日志: access_log
CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>
Ⅰ、预备工作,要不同的IP,先添加两个IP地址
重启网卡 nmcli c up ens160
Ⅱ、创建这俩IP的文件夹,后续会放默认首页文件first.html
Ⅲ、去/etc/httpd/conf.d目录下vim创建的同时编辑额外配置文件myhost.conf
Ⅳ、写默认首页文件first进/www/ip(对应写入);对额外配置文件进行配置
【这里还有东西没有配置,目录的权限未设置所以完整设置在👇】
Ⅴ、配置完以后systemctl restart httpd重启服务,然后验证是否能解析
【curl命令类似于访问网页】