Linux-笔记13

#### OpenSSH

- OpenSSH开源免费提供ssh远程安全登录的程序

- ssh协议端口:22/tcp

- 服务名:sshd

- ssh提供密钥认证登录方式

```shell
#生成公私钥
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Yjcq3+SAOmVQgCbRVC+6QgJp+rss5MK+anEwitmi4Xo root@localhost
The key's randomart image is:
+---[RSA 2048]----+
|.=oo. |
|oo. .. |
|=. .. . |
|+o.. . |
|=++. o S |
|O+.ooo + . |
|Bo=oo o . |
|+BEo o = |
|O=*o . o |
+----[SHA256]-----+

#查看密钥文件
[root@localhost ~]# ls .ssh
id_rsa id_rsa.pub

#将公钥拷贝至其他主机
[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.27

#其他主机查看公钥文件
[root@host-27 ~]# ls .ssh
authorized_keys

#验证是否实现密钥认证登录
[root@localhost ~]# ssh 192.168.0.27
Last login: Sat Jun 5 00:41:47 2021 from 192.168.0.1
[root@host-27 ~]#
[root@host-27 ~]# exit
登出
```

#### scp远程复制工具

- scp可以实现主机之间的文件拷贝

```shell
#将本地文件拷贝至远程主机
[root@localhost ~]# touch /opt/test.txt
[root@localhost ~]# scp /opt/test.txt root@192.168.0.27:/opt

#将远程主机文件拉取到本地
[root@localhost ~]# scp root@192.168.0.27:/etc/fstab /opt
[root@localhost ~]# ls /opt
fstab test.txt
```

#### 提高ssh服务安全性

- 配置文件:/etc/ssh/sshd_config

```shell
[root@master ~]# vim /etc/ssh/sshd_config
.. ..
#Port 22 #ssh默认监听端口
#PermitRootLogin yes #是否允许root用户连接,yes允许,no不允许
#PermitEmptyPasswords no #不允许空密码登录
PasswordAuthentication yes #允许用密码登录
AllowUsers 用户1 用户2 用户3@192.168.0.0/24 #定义账号白名单
##DenyUsers 用户1 用户2 #定义账号黑名单
```

#### 文件共享服务FTP介绍

- ##### FTP(File Transfet Protocol):文件传输协议

- FTP是一种在互联网中基于TCP协议端到端的数据传输协议

- 基于C/S架构,默认使用20、21号端口

- 端口20(数据端口)用于数据传输

- 端口21(命令端口)用于接收客户端发出的相关FTP命令

#### FTP工作模式

- 主动模式:FTP客户端从本机的非特殊端口(>1023)连接FTP服务器的命令端口21,服务端通过本地的20号端口主动向客户端的随机端口发起连接请求,开始传输数据

- 被动模式:FTP客户端通过向FTP服务器发送PASV命令进入被动模式,FTP服务器会另开一个随机端口,客户端主动连接到随机端口后,开始传输数据

- 可以实现ftp功能的软件:

- WU-ftpd:
- proftpd:专业的FTP软件
- pureftp:纯粹的FTP软件
- vsftpd:非常安全的ftp服务器
- ServU:windows里的一款FTP软件

- 客户端访问ftp服务器工具:

- ftp
- lftp、lftpget
- wget
- curl
- FileZilla:windows客户端工具,可从软件商店直接下载

#### vsftpd介绍

- vsftpd(very secure ftp daemon)非常安全的FTP守护进程
- 是一款运行在Linux操作系统上开源且免费FTP服务程序
- 不仅完全开源而且免费,还为我们提供了一个快速的、稳定并且安全的FTP服务

#### vsftpd用户模式

- 本地用户
- 虚拟用户
- 匿名用户

#### vsftpd服务相关参数

- /var/ftp #匿名用户共享目录
- /etc/vsftpd #配置文件所在目录
- /etc/vsftpd/vsftpd.conf #主配置文件
- /usr/sbin/vsftpd #主程序文件
- /etc/vsftpd/ftpusers #黑名单
- /etc/vsftpd/user_list #控制名单(配置文件控制白名单与黑名单)
- /var/log/xferlog #日志目录

#### vsftpd匿名用户模式

```shell
#安装软件
[root@ftp-server ~]# yum -y install vsftpd

#启动服务
[root@ftp-server ~]# systemctl start vsftpd

#查看服务运行状态
[root@ftp-server ~]# systemctl status vsftpd

#客户端下载连接工具
[root@client ~]# yum -y install ftp lftp

#匿名用户权限介绍
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
...
12 anonymous_enable=YES #是否允许匿名用户访问,yes允许,no不允许
29 #anon_upload_enable=YES #是否允许匿名用户上传,yes允许,no不允许
33 #anon_mkdir_write_enable=YES #是否允许匿名用户创建目录,yes允许,no不允许
...
anon_other_write_enable=yes #是否允许匿名用户写权限,yes允许,no不允许(手动添加)
```

#### vsftpd本地用户模式

```shell
#创建本地用户
[root@localhost ~]# useradd ftpuser
[root@localhost ~]# passwd ftpuser

#修改主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
...
12 anonymous_enable=NO #关闭匿名用户访问
16 local_enable=YES #是否允许本地用户访问,yes允许,no不允许
19 write_enable=YES #是否允许本地用户有写权限,yes允许,no不允许
23 local_umask=022 #本地用户上传文件默认权限为755
37 dirmessage_enable=YES #当用户第一次进入新目录时显示消息(了解)
40 xferlog_enable=YES #启动xferlog日志记录,该文件记录传输数据
53 #xferlog_file=/var/log/xferlog #日志文件位置,需删除注释
43 connect_from_port_20=YES #启用数据传输端口
49 #chown_username=whoever #改变上传文件的属主与属组
60 #idle_session_timeout=600 #客户端连接超时时间
63 #data_connection_timeout=120 #数据连接超时时间
101 chroot_local_user=YES #是否允许本地用户切换目录,yes不允许,no允许
115 listen=NO #是否开启监听IPV4的连接,默认没开启,改为yes
126 pam_service_name=vsftpd #启用pam认证的文件名称,路径为/etc/pam.d/vsftpd
127 userlist_enable=YES #是否启用控制名单文件,yes启用,no不启用,文件为/etc/vsftpd/user_list,如果启用控制名单功能,需要指定该文件为黑名单|白名单
128 userlist_deny=no #yes拒绝user_list文件中用户登录ftp服务器(黑名单),no允许登录(白名单)
max_clients= #限制最大并发连接数量
```

#### NFS网络文件系统

- NFS(Network File System)网络文件系统 , 是一种基于TCP/UDP传输协议的文件共享服务

- NFS基于C/S架构,服务端启用协议将文件共享到网络上,然后允许本地NFS客户端通过网络挂载服务端共享的文件。

- NFS基于RPC 远程过程调用机制, 支持在异构系统之间数据的传送 , RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作

- NFS协议:端口号 2049

- 软件包:nfs-utils

- 服务名:nfs

- 配置文件:/etc/exports

- RPC协议:端口号 111

- 软件包:rpcbind

- 服务名:rpcbind

- NFS服务端配置

```shell
#安装nfs服务端软件包
[root@localhost ~]# yum -y install nfs-utils

#启动nfs服务
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl enable nfs

#查看服务端口信息
[root@localhost ~]# ss -anptul | grep 2049
udp UNCONN 0 0 *:2049 *:*
udp UNCONN 0 0 :::2049 :::*
tcp LISTEN 0 64 *:2049 *:*
tcp LISTEN 0 64 :::2049 :::*

#查看RPC服务端口信息
[root@localhost ~]# ss -anptul | grep rpcbind
udp UNCONN 0 0 *:111
tcp LISTEN 0 128 *:111

#创建共享目录
[root@localhost ~]# mkdir /upload

#修改nfs主配置文件:/etc/exports
[root@localhost ~]# vim /etc/exports
/upload 192.168.0.27(rw) 192.168.0.28(ro)
/test 192.168.0.0/24(rw) #共享给指定网段
共享文件夹路径 客户机地址(权限) 客户机地址(权限)

#重启nfs服务
[root@localhost ~]# systemctl restart nfs
```

- 客户端访问NFS

```shell
#列出有哪些NFS共享资源:showmount -e 服务器地址,如果客户端没有该命令需安装nfs-utils
[root@client ~]# showmount -e 192.168.0.26
Export list for 192.168.0.26:
/upload 192.168.0.28,192.168.0.27

#手动挂载NFS共享:mount
[root@client ~]# mkdir /opt/upload
[root@client ~]# mount 192.168.0.26:/upload /opt/upload
服务器地址:文件夹路径 挂载点

[root@client ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
...
192.168.0.26:/upload 17G 1.2G 16G 7% /opt/upload

#客户端验证是否可以是否共享目录
[root@client ~]# cd /opt/upload/
[root@client upload]# touch xx.txt
touch: 无法创建"xx.txt": 权限不够
#解释:默认客户端是以nfs用户身份访问远端的nfs服务器,如果nfs服务端共享的目录属主为root用户,那客户端默认是没有写权限

#服务端开放允许以root身份访问
[root@localhost ~]# vim /etc/exports
/upload 192.168.0.27(no_root_squash,rw) 192.168.0.28(ro)
解释:no_root_squash 不挤压root用户身份(允许以root身份访问)

[root@localhost ~]# systemctl restart nfs

#客户端验证
[root@client upload]# touch xx.txt
[root@client upload]# ls
xx.txt

#为普通用户授权访问nfs共享目录(通过ACL实现,nfs通过用户UID辨别用户身份)
[root@localhost ~]# setfacl -m u:lisi:rwx /upload

#设置SBIT权限
[root@localhost ~]# chmod o+t /upload/

#客户端lisi用户验证授权
[lisi@client upload]$ touch lisi.txt
[lisi@client upload]$ ls
lisi.txt xx.txt

[lisi@client upload]$ rm -rf xx.txt
rm: 无法删除"xx.txt": 不允许的操作

#客户端实现开机挂载配置:/etc/fstab
[root@localhost]# vim /etc/fstab
192.168.0.26:/xxx /mnt/xxx nfs defaults,_netdev 0 0
服务器地址:文件夹路径 挂载点 文件系统 defaults,_netdev 0 0
#解释:_netdev:指定nfs是网络设备
```

NAS(网络附加存储)存储模式中的文件共享服务:

- samba文件共享服务:支持跨平台

- FTP文件共享服务:支持跨平台

- NFS文件共享服务:支持跨平台

DAS存储(直连存储):直接附加在电脑主板上的硬盘

SAN存储(存储区域网络):块级别存储,把自己电脑上的硬盘共享给其他主机

#### Apache httpd的web服务

适用于Unix/Linux下的web服务器软件

Apache httpd(开源且免费),虚拟主机,支持HTTPS协议,支持用户认证,支持单个目录的访问控制,支持URL地址重写,支持路径别名,支持反向代理和负载均衡,高度模块化设计,支持并发访问量20000左右

Tomcat(开源且免费):适合做java的网站

WebSphere:商业软件,适合做Java的网站

WebLogic:商业软件,适合做Java的网站

Jboss:红帽公司,商业软件,适合做Java的网站

Tengine:开源免费的web服务器软件,基于Nginx二次开发,淘宝正在使用一款web服务器软件

Nginx:开源免费的web服务器软件

#### httpd介绍

httpd是Apache基金会下一个开源且免费的web服务器软件,高度模块化设计

基于B/S(Browser/Server)模式:服务端提供页面,浏览器显示并下载页面

基于TCP/HTTP协议进行传输

#### 安装httpd服务

软件包:httpd

系统服务:httpd

```shell
#a安装httpd服务
[root@localhost ~]# yum -y install httpd

#启动httpd服务
[root@localhost ~]# systemctl start httpd

#查看服务运行状态
[root@localhost ~]# systemctl status httpd

#客户端访问
curl http://192.168.0.26
```

#### 服务相关参数

主配置文件:/etc/httpd/conf/httpd.conf

默认网页根目录:/var/www/html

默认网页文件名:index.html

**提供的默认配置**

- Listen:监听地址:端口(80)
- ServerName:注册的DNS域名
- DocumentRoot:网页根目录(/var/www/html)
- DirectoryIndex:默认首页文件名(index.heml)

```shell
#修改主配置文件指定域名
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
...
ServerName www.abcd.com:80 #指定域名

#重启httpd服务
[root@localhost ~]# systemctl restart httpd

#实现本地主机名与IP地址解析
[root@localhost ~]# vim /etc/hosts
...
192.168.0.26 www.abcd.com

#修改配置文件指定网页根目录存放位置
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
...
DocumentRoot "/var/www/myweb"

#创建网页根目录
[root@localhost ~]# mkdir /var/www/myweb

#创建测试页面
[root@localhost ~]# vim /var/www/myweb/index.html
abcd

#重启httpd服务
[root@localhost ~]# systemctl restart httpd

#访问测试:
curl http://www.abcd.com
abcd
```

#### httpd虚拟web主机

虚拟web主机的特点:由同一台主机提供多个web站点

虚拟web主机实现的三种方式:

- 基于域名的虚拟主机:www.xxoo.com www.xxxx.com www.oooo.com

- 基于端口的虚拟主机

- 基于IP地址的虚拟主机

虚拟主机配置路径:/etc/httpd/conf.d/*.conf

虚拟主机配置:

<VirtualHost IP地址:端口>

ServerName 此站点的DNS名称

DocumentRoot 此站点的网页根目录

</VirtualHost>

… …

#### 基于域名虚拟web主机

```shell
[root@localhost ~]# vim /etc/httpd/conf.d/web.conf
ServerName www.xxoo.com
DocumentRoot /var/www/xxoo
</VirtualHost>

<VirtualHost *:80>
ServerName www.xxxx.com
DocumentRoot /var/www/xxxx
</VirtualHost>


<VirtualHost *:80>
ServerName www.oooo.com
DocumentRoot /var/www/oooo
</VirtualHost>

# 创建网页根目录
[root@localhost ~]# mkdir /var/www/xxoo
[root@localhost ~]# mkdir /var/www/xxxx
[root@localhost ~]# mkdir /var/www/oooo

#创建默认首页
[root@localhost ~]# vim /var/www/xxoo/index.html
xxoo
[root@localhost ~]# vim /var/www/xxxx/index.html
xxxx
[root@localhost ~]# vim /var/www/oooo/index.html
oooo

#配置本地解析
[root@localhost ~]# vim /etc/hosts
192.168.0.26 www.xxoo.com
192.168.0.26 www.xxxx.com
192.168.0.26 www.oooo.com

#重启服务
[root@localhost ~]# systemctl restart httpd

#访问测试
[root@localhost ~]# curl http://www.xxoo.com
xxoo
[root@localhost ~]# curl http://www.xxxx.com
xxxx
[root@localhost ~]# curl http://www.oooo.com
oooo
```

posted @ 2022-01-11 14:27  日光倾城-  阅读(642)  评论(0)    收藏  举报