目录
SHH服务
1.介绍
1、SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;2、SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;
3、SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
4、和ssh一样的通信协议还有telnet(端口号23),和ssh不一样的是ssh是密文传输数据,而telnet则是明文传输,所以相对而言ssh的安全性更高一点
5、SSH服务优点:对通信数据进行加密处理,包括登录名称和登陆的密码,所以安全性很高
2.认识ssh服务
1、ssh服务配置文件路经:/etc/ssh/sshd_config
2、查看SSH服务的运行状态:
3.SSH服务配置文件详解
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # #Port 22 <--设置端口号,默认是22 #AddressFamily any #ListenAddress 0.0.0.0 <--- 设这监听地址,默认是0.0.0.0代表什么都可以连接 #ListenAddress :: HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: #LoginGraceTime 2m <---设置验证登录时间,默认两分钟 #PermitRootLogin yes <--默认root可以直接登录 #StrictModes yes #MaxAuthTries 7 <----设置登录重试的次数 #MaxSessions 10 <----设置最多能够开启会话的个数 #PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no <---默认禁止无密码用户登录 PasswordAuthentication yes # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no #KerberosUseKuserok yes # GSSAPI options GSSAPIAuthentication yes GSSAPICleanupCredentials no #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no #GSSAPIEnablek5users no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several # problems. UsePAM yes <--- 开启PAM认证 #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #UsePrivilegeSeparation sandbox #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #ShowPatchLevel no #UseDNS yes <---允许DNS反向解析 #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server
SSH服务配置文件常用配置项,如下:
#Port 22 #登陆端口
#LoginGraceTime 2m #登录验证时间为两分钟
#PermitRootLogin yes #允许root用户登录(安全考虑,这里可以设置为no,禁止root用户登录)
#MaxAuthTries 6 #最大重试的次数为6
PasswordAuthentication yes #允许空密码用户登录
UseDNS no #禁止DNS反向解析,提高服务器的响应速度
还有一些常用选项的说明:
-Port: 这个选项定义SSH服务器监听的端口号。默认端口是22。您可以更改端口以增加安全性,以避免暴露SSH服务于互联网的常用端口。例如,您可以将端口更改为2222。
-ListenAddress:指定SSH服务监听的IP地址。默认是所有可用的IP地址(即0.0.0.0)。可以指定特定的IP地址,比如本地回环地址127.0.0.1或某个特定的网络接口地址。这在需要限制谁可以访问SSH服务时非常有用。
-HostKey:SSH服务使用的主机密钥文件的路径。通常,在安装SSH服务时,会在/etc/ssh目录下生成三个主机密钥文件:/etc/ssh/ssh_host_rsa_key、/etc/ssh/ssh_host_dsa_key和/etc/ssh/ssh_host_ecdsa_key。如果需要自己生成主机密钥,则可以使用ssh-keygen命令。
- PermitRootLogin:指定是否允许以root用户身份登录SSH服务。默认是yes。为了安全,建议将其修改为no,并创建一个非特权用户进行登录和管理。
- PubkeyAuthentication:指定是否允许使用公钥进行身份验证。默认是yes。为了安全,建议只使用公钥身份验证方式进行登录。
-AuthorizedKeysFile:指定含有公钥的文件的路径。默认是~/.ssh/authorized_keys。如果将此文件放到其他地方,则需要修改此选项的值。
-PermitEmptyPassword:指定是否允许空密码登录。默认是no。建议设置为no,以防止未经授权的登录。
-ChallengeResponseAuthentication:指定是否启用挑战-响应身份验证。默认是no。如果需要使用两因素身份验证(如基于Google Authenticator的身份验证),则需要将其设置为yes。
-UsePAM:指定是否在登录时使用PAM进行身份验证。默认是yes。建议不要禁用此选项,以便使用系统中其他PAM模块来增强安全性。
-X11Forwarding:指定是否启用X11转发。默认是no。在需要在SSH会话中运行图形界面应用程序时,需要将其设置为yes。
-MaxAuthTries:指定登录尝试次数上限。默认是6。为了避免暴力攻击,建议将其调低。
-AllowUsers和DenyUsers:分别用于指定允许登录的用户和禁止登录的用户。可以使用通配符进行匹配。
-LogLevel:指定日志记录的级别。默认是INFO。可以设置为DEBUG、VERBOSE、SILENT等级别。
3.SSH服务常用的命令 -ssh
1、systemctl status/stop/start/restart sshd.service # SSH服务器 启动/关闭/重启
2、ssh [远程主机用户名]@[远程服务器主机名或IP地址] [-p port] # SSH使用语法
3、如果没有指定-p参数,则默认ssh端口为22,22端口是高危端口
4.SSH服务常用的命令 -scp
利用ssh协议传输文件和获取文件:
1、scp root@xxxx:/etc/passwd /root/passwd10.txt #下行复制,将远程主机中的etc/passwd文件复制到本机
2、scp -r /etc/ssh root@xxxx:/opt #上行复制,将本机的etc/ssh复制到远程主机,因为是复制目录所以要-r
SCP(Secure Copy)是SSH协议的一部分,用于在本地和远程计算机之间安全地复制文件和目录。下面是一些常用的SCP命令示例:
-
从远程服务器下载文件到本地:
scp username@remote_host:/path/to/file /local/path
将远程服务器上的文件复制到本地计算机指定的路径。
-
将本地文件上传到远程服务器:
scp /local/file username@remote_host:/path/to/destination
将本地计算机上的文件复制到远程服务器的指定路径。
-
复制整个目录:
scp -r /local/directory username@remote_host:/path/to/destination
这将递归地复制本地目录及其所有子目录和文件到远程服务器。
-
指定端口:
scp -P port /local/file username@remote_host:/path/to/destination
如果SSH服务器监听非标准端口(默认为22),您可以使用此选项指定使用的端口号。
-
从远程服务器下载文件到本地,并保留文件的时间戳和权限:
scp -p username@remote_host:/path/to/file /local/path
使用-p选项将会保留复制文件的原始时间戳和权限。
这些是使用SCP命令进行常见文件复制操作的示例。请记住,您需要替换实际的用户名、主机名或路径来适应您的环境。
使用方式:
scp [参数] [原路径] [目标路径]
常用可选参数:
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-r 递归复制整个目录。
-P port 注意是大写的P, port是指定数据传输用到的端口号 路径规则:
user@IP:dirname
user:登录用户名
IP:登录服务器地址
dirname:文件路径
例如: root@123.123.123.123:/etc/share/test.js 表示123.123.123.123服务器上,root用户/etc/share/下的test.js文件
注意:
-
执行scp命令之后,会要求输入user的登录密码,(如果两台机器之前已部署ssh身份验证,则不需要);
-
如果是从服务器获取文件,则目标路径直接填写本地存放路径即可。
-
如果是上传文件到服务器,则原路径填写本地文件路径即可。
例子:
例1:从远程服务器复制文件到本地目录:
例2:传输本机文件到远程机器指定目录
5.SSH服务免密登陆:
免密登陆原理:
基于公钥加密技术实现。在Linux中每一个用户都有一对公钥和私钥,公钥可以自由传输给其他主机,私钥则需要妥善保管。公钥:id_rsa.pub私钥:id_rsa
1.执行命令ssh-keygen -t rsa,生成公钥和私钥
2.会在当前用户的家目录的.ssh/生成公钥和私钥
3.执行ssh-copy-id -i 将公钥文件传输给远程的主机,输入远程主机对应的密码。命令如下: ssh-copy-id -i /root/.ssh/id_rsa.pub root@xxxx
4.此时在执行登录远程主机 ssh root@xxxx,不会再输入密码:
所以就是接受公钥的主机,从发出公钥的主机的机子,登会接受的机子不需要密码。
crond服务
1.初步介绍:
1、crond是Linux中一个可以定时进行任务调度的后台程序。
2、任务调度是指系统在某个时间执行的特定的命令或程序。
3、任务调度分类:
>系统工作--有些重要的工作必须周而复始地执行。如病毒扫面等。
> 个别用户工作--个别用户可能希望执行某些程序。编写脚本shell来使crond进行定时调用比如mysql数据库的备份;使crond定时调用简单任务,比如一条指令。
systemctl status crond.service #查看crond服务的状态
2.crond服务配置文件详解
1、crond服务配置文件路径:/etc/crontab
1.minute:表示分钟,可以是从0到59之间的任何整数。
2.hour:表示小时,可以是从0到23之间的任何整数。
3.day:表示日期,可以是从1到31之间的任何整数。
4.month:表示月份,可以是从1到12之间的任何整数。
5.week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
6.command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
3.crond服务使用:
crontab 命令使用详解:
-e:执行文字编辑器来设定时程表,内定的文字编辑器是 VI,重启服务器则失效。
-l:列出目前的时程表。
-r:删除目前的时程表。
-i:在删除用户的crontab文件时给确认提示。
基本格式:
* * * * * cmd
分 时 日 月 周 需要执行的命令
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
数字范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 需要执行的命令 |
周 -- 0或7都代表"星期天"的意思。
特殊字符 | 代表含义 |
* | 星号代表任何时刻,就是“每”的意识。取值范围所有数字 举例: 00 01 * * * cmd 表示每天的01点执行命令 |
, | 逗号代表分割时段。 举例: 30 09,10 * * * cmd 表示每天的9点30分和10点分执行命令 |
- | 减号代表一个时间范围段。 举例: 20 09-12 * * * cmd 表示每天的9点到12点的20分(9点20|10点20|11点20|12点20)执行命令 |
/n | n代表数字范围内的数字,即每隔n单位间隔的意识,例如每隔15分钟:*/15 * * * * cmd 举例: 15 */3 * * * cmd 表示每隔3小时的15分钟执行命令 |
4.crond服务命令举例:
1.每两个小时重启一次apache
0 */2 * * * /sbin/service httpd restart
2.每天7:50开启ssh服务
50 7 * * * /sbin/service sshd start
3.每天22:50关闭ssh服务
50 22 * * * /sbin/service sshd stop
4.每月1号和15号检查/home 磁盘
0 0 1-15 * * fsck /home
0 0 1,15 * * fsck /home
5.每小时的第一分执行 /home/bruce/backup这个文件
1 * * * * /home/bruce/backup
6.每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;
7.意思是每月的1、11、21、31日是的6:30执行一次ls命令
30 6 */10 * * ls
NFS服务
1.初步介绍:
NFS(Network File System)即网络文件系统。
>它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
>最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法。
缺点:
>客户端的数据都是通过明文传送。客户端没有用户认证机制,安全性能一般,所以建议一般在局域网内使用。
>容易发生单点故障,即server服务器宕机所有的客户端都不能访问(产生的后果:在linux中执行df -h命令会直接hung住)
使用场景:
> web集群中NFS服务器主要用于存储用户上传的信息,方便集群中机器获取用户数据。如图片 附件 头像 视频 音频,就比如oracle数据泵需要有一个本地存放备份文件的空间,这种情况下就需要个较大的存储空间,这时候就会用到nfs
NAS服务、SAN、NFS(共享目录)、isci(共享硬盘)
2.NFS服务工作原理
NFS服务依赖于RPC(Remote Procedure Call)服务。nfs默认端口2049,实际使用过程中因为需要提供不同的服务,因此NFS启动时还会随机调用系统的空闲端口。因为NFS随机端口的原因所以需要RPC服务来和client端确认传输端口等。因为NFS服务启动时需要向RPC注册端口信息,所以RPC要在NFS服务启动之前启动。 在NFS server上创建用于共享的目录/data,client用mount将/data挂载到自己本地一个目录上,挂载目录可以和/data名称不同。将挂载信息写入本机开机启动文件里 如 /etc/rc.local 客户端无需启动NFS服务,但需要启动RPC服务。
3.配置NFS服务:与客户机共享目录
一.在主机配置文件内容:
1.安装 nfs-utils、rpcbind 软件包
yum -y install nfs-utils rpcbind
2.创建共享目录,并赋予权限
mkdir /share
chmod 777 /share
3.在vim /etc/exports中配置(xxxx为端口号)
/share 192.168.231.148/24(rw,sync,no_root_squash)
客户机地址可以是主机名、IP 地址、网段地址,允许使用“*”、 “?”通配符。 “rw” 表示允许读写,“ro” 表示为只读。 sync :表示同步写入到内存与硬盘中。 no_root_squash : 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash)。 root_squash :表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户。
其它常用选项
all_squash :所有访问用户都映射为匿名用户或用户组。 async :将数据先保存在内存缓冲区中,必要时才写入磁盘。 subtree_check(默认):若输出目录是一个子目录,则nfs服务器将检查其父目录的权限。 no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。 NFS 服务程序
4.手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
5.查看本机发布的 NFS 共享目录
exportfs -rv
showmount -e
二、在客户机中访问NFS共享资源
yum -y install nfs-utils rpcbind
systemctl start rpcbind
systemctl enable rpcbind
2.查看 NFS 服务器端共享了哪些目录,并挂载
showmount -e xxxx (xxxx为主机端口号)
mkdir /share1 #客户端创建挂载目录
mount xxxx:/share /share1 挂载目录
df -h #确认挂载结果
3.设置自动挂载
vim /etc/fstab
xxxx:/share /share1 nfs defaults,_netdev 0 0 #(xxxx为端口号)
_netdev :表示挂载设备需要网络
注意:强制卸载 NFS 如果服务器端NFS服务突然间停掉了,而客户端正在挂载使用时,在客户端就会出现执行 df -h 命令卡死的现象。这个时候直接使用umount 命令是无法直接卸载的,需要加上 -lf 选项才能卸载。 umount -lf /share1
LInux静态路由及临时IP配置
1.Linux 静态路由相关命令
1、查看当前路由表:route -n
2、添加静态路由:route add -net 10.10.170.0/24 gw 10.10.180.254
3、删除静态路由:route del -net 10.10.170.0/24 gw 10.10.180.254
2.Linux 临时IP地址添加与删除
1、添加临时IP:ifconfig bond0 192.168.1.11 netmask 255.255.255.0
2、删除临时IP:ip a/addr/address del/delete 192.168.1.1/24 dev eth0