《Linux Shell脚本攻略》学习笔记-第八章

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

8.1 简介

TCP/IP网络的运作过程就是在节点之间传递分组。每一个分组中都包含了目标的IP地址以及处理分组中数据的应用程序端口号。

当节点接收到分组时它会查看自己是否就是改分组的目的地。如果是节点会再检查端口号并调用相应的应用程序来处理分组数据。如果不是节点则根据已知的网络配置将分组发送到离最终目的地更近的下一个节点。

8.2 网络设置

限制它只显示某个特定接口的信息

如果想要从ifconfig输出中提取ip地址可以使用

ifconfig的子命令可以定义设备类别以及MAC地址

将IP地址映射为符号名称的这种技术称为域名服务。当我们输入www.google.com计算机使用DNS服务器将域名解析为对应的IP地址。

一个域名可以对应多个IP地址对于这种情况ping只会显示其中的一个地址。

如果一个网络中的设备想要同另一个网络中的设备通信就需要借助某个同时连接了两个网络的设备分组。这个特殊的设备叫做网关它的作用就是在不同的网络中转发分组。

操作系统维护着一个叫做路由表的表格它包含了分组如何转发的信息。

-n选项可以指定数字形式显示地址默认情况下route命令会将IP地址映射为名字。

如果系统不知道如何分组到目的地的路由它会将其发送到默认网关。

route add命令可以添加默认网关。

8.3 ping

ping可以用于检验网络上主机之间的连通性找出活动主机。

默认情况下ping会发送连续分组可以使用ctrl+c来停止ping命令。

网络管理员通常会对网络设备进行配置使其不响应ping命令。

ping命令可以显示每个分组的往返时间RTT。

其中mdev代表的是平均偏差。

ping发出的每个分组都有一个序列号从1开始知道ping结束。

依据你使用的系统或ping命令版本的不同生存时间TTL的初始值也不尽相同。你可以通过向环回接口发出ping命令来确定TTL的初始值。

使用TTL的初始值减去回应中的TTL值就可以得到两个位置之间的跳数。128-54

8.4 跟踪IP路由

traceroute命令可以显示分组途径的所有网管的地址帮助我们搞清楚分组到达目的地需要经过多少跳。

8.5 列出网络中所有的活动主机

8.6 使用SSH在远程主机上执行命令

SSH能够让你访问远程计算机上的shell从而在其上执行交互命令并接收结果或是启动交互会话。

连接运行了SSH服务器的远程主机

SSH服务器默认在端口22上运行但是有些SSH服务器并没有使用这个端口。针对这个特殊情况可以使用-p port_number来指定端口。

8.8 通过网络传输文件

计算机联网的主要目的之一就是资源共享文件就是常见的共享资源。

启动SFTP会话

可以使用-oPort=PORT_NUMBER来指定端口号。

scp的选项-r可以在两台网络主机之间以递归形式复制目录scp的-p选项能够在复制文件的同时保留文件的权限和模式。

8.10 实现SSH的无密码自动登录

       SSH广泛用于脚本自动化。借助SSH我们可以在远程主机上执行命令并读取输出。SSH使用用户名和密码进行认证。在SSH命令的执行过程中提示输入密码。但是在自动化脚本中SSH命令可能在一个循环中执行上百次每次都得提供密码的话显然不实际。因此我们需要将登入过程自动化。SSH就包含了一个内建的特性可以用SSH密钥实现自动登陆。这则攻略描述了如何创建SSH密钥并协助实现自动登陆。

       SSH采用基于公钥和基于私钥的加密技术进行自动化认证。认证密钥包含两部分一个公钥和一个私钥。我们可以通过“ssh-keygen”命令创建认证密钥。要想实现自动化认证公钥必须放置在服务器中将其加入文件~/.ssh/authorized_keys与公钥对应的私钥应该放入你用来登录的客户机的~/.ssh目录中。另一些与SSH相关的配置信息例如authorized_keys文件的路径与名称可以通过修改文件/etc/ssh/sshd_config进行配置。

       设置SSH自动化认证步骤

                1. 创建SSH密钥这需要登录到远程主机

                2. 将生成的密钥传输到远程主机并将其加入文件~/.ssh/authorized_keys中

1、输入命令创建SSH密钥并指定加密算法

ssh-keygen -t rsa

      这里使用ssh-keygen 命令-t参数表示接下来跟的是加密类型type然后就是加密的算法可以选择rsa1老版的rsarsa新版的rsadsaecdsaed25519 等。这里用作证书通常使用rsa算法。

       然后会要求你填输出的文件夹一般默认就摆在/home/user/.ssh/下的id_rsa文件中吧。不过需要注意的是如果曾经生成过密钥现在重新生成一个的话如果不改地址是会将原来的覆盖掉的这样可能会惹一些麻烦的。。。

       接下来你可以另外设置一个密码这个密码相当于一个独立的连接服务器的密码而不是服务器用户的密码。你就是相当于用这个密码来替代服务器的用户密码这个密码的长度要大于四。当然如果怕麻烦可以直接回车回车表示不用这个密码。

到这一步密码就生成完了在~/.ssh/下就有了生成的文件了。其中id_rsa.pub是公钥id_rsa是私钥。

2、上传公钥到远程服务器

      公钥必须添加到想要自动登录的远程服务器的/home/user/.ssh/authorized_key文件中。

scp id_rsa.pub user@remote_host:~/.ssh/authorized_keys

            本地服务器操作过程

远程服务器检查

8.13 分析网络流量和端口

8.15 创建套接字

netcat和nc命令都可以创建用于在TCP/IP网络上传输数据的套接字。我们需要两个套接字一个负责侦听连接一个负责发起连接。注意关闭防火墙

8.18 使用ipables架设简易防火墙

1iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT

2iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT

3iptables -A INPUT -p tcp --dport 端口号-j DROP

  • netstat也可以显示网络服务统计信息
  • lsof命令可以列出已打开的文件选项-i将范围限制在已打开的网络连接
  • 无密码登录检验
  • 实现方法
  • 储备知识
  • SCP是一个安全的文件复制命令文件传输均通过SSH加密通道进行传输。
  • SFTP是一个运行在SSH连接之上并模拟了FTP接口的文件传输系统它不需要远端运行FTP服务器来进行文件传输但是必须要有SSH服务器。
  • fping
  • 实际效果
  • shell脚本
  • 限制发送的分组数量
  • 生存时间
  • 序列号
  • 往返时间
  • 显示路由表信息
  • DNS查找
  • 名字服务器与DNS域名服务
  • 硬件地址欺骗
  • 显示IP地址
  • 打印网络接口列表
  • 很多网络使用动态主机配置协议DHCP自动为连接到网络上的计算机分配IP地址。dhclient命令可以用于完成这项任务很多linux发行版在感知到有网络物理连接的时候会自动调用dhclient。
  • 补充内容
  • 设置网络接口的IP地址
  • ifconfig命令用于配置及显示网络接口、子网掩码等细节信息。
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shelllinux