目标

  • 关机/重启
    • shutdown
  • 查看或配置网卡信息
    • ifconfig
    • ping
  • 远程登录和复制文件
    • ssh
    • scp

      01. 关机/重启

      | 序号 | 命令 | 对应英文 | 作用 | | —- | —- | —- | —- | | 01 | shutdown 选项 时间 | shutdown | 关机/重新启动 |

1.1 shutdown

  • shutdown 命令可以 安全 关闭 或者 重新启动系统 | 选项 | 含义 | | —- | —- | | -r | 重新启动 |

提示:

  • 不指定选项和参数,默认表示 1 分钟之后 关闭电脑
  • 远程维护服务器时,最好不要关闭系统,而应该重新启动系统
  • 常用命令示例
    1. # 重新启动操作系统,其中 now 表示现在
    2. $ shutdown -r now
    3. # 立刻关机,其中 now 表示现在
    4. $ shutdown now
    5. # 系统在今天的 20:25 会关机
    6. $ shutdown 20:25
    7. # 系统再过十分钟后自动关机
    8. $ shutdown +10
    9. # 取消之前指定的关机计划
    10. $ shutdown -c

    02. 查看或配置网卡信息

    | 序号 | 命令 | 对应英文 | 作用 | | —- | —- | —- | —- | | 01 | ifconfig | configure a network interface | 查看/配置计算机当前的网卡配置信息 | | 02 | ping ip地址 | ping | 检测到目标 ip地址 的连接是否正常 |

2.1 网卡 和 IP 地址

网卡

  • 网卡是一个专门负责网络通讯的硬件设备
  • IP 地址是设置在网卡上的地址信息

    我们可以把 电脑 比作 电话网卡 相当于 SIM 卡IP 地址 相当于 电话号码

IP 地址

  • 每台联网的电脑上都有 IP 地址是保证电脑之间正常通讯的重要设置

    注意:每台电脑的 IP 地址不能相同,否则会出现 IP 地址冲突,并且没有办法正常通讯 提示:有关 IP 地址的详细内容,在就业班会详细讲解!

2.2 ifconfig

  • ifconfig 可以查看/配置计算机当前的网卡配置信息

    # 查看网卡配置信息
    $ ifconfig
    # 查看网卡对应的 IP 地址
    $ ifconfig | grep inet
    

    提示:一台计算机中有可能会有一个 物理网卡多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensXX 表示

  • 127.0.0.1 被称为 本地回环/环回地址,一般用来测试本机网卡是否正常 ``` 收集信息 用的最频繁的就是查看分配的 ip 等信息了吧,以前只需要输入 ifconfig 即可,现在也有同样简单的命令: ip a

如果只想看 ipv4 的信息只需要: ip -4 a

查看特定网络接口的信息(比如无线): ip a show wlan0

列出正在运行的网络接口: ip link ls up

#

修改配置

这是常用的第二大功能,下面就比较来说:

修改 ip 为指定的地址,ifconfig 是这样的: ifconfig eth0 192.168.1.101

那么用 ip 命令却是这样的 ip a add 192.168.1.101/255.255.255.0 dev eth0

简短一点可以这样: ip a add 192.168.1.101/24 dev eth0

显然这样的话,你需要知道你要安排的地址的子网掩码。

还记得么?ipv4 是由 32 位构成,分为四段,每段 8 位,1111 1111 就是最大值换成十进制是 255

x.x.x.x/24 的意思就是前 24 位是网络地址,也就是最后一段才是主机地址。

同样的方式,你可以这样删除一个网卡的地址: ip a del 192.168.1.101/24 dev eth0

如果你想简单的清除所有接口上的所有地址,只需要这样即可。 ip -s -s a f to 192.168.1.0/24

ip 命令另一方面还能激活/禁用网络接口。

禁用 eth0
ip link set dev eth0 down

激活 eth0
ip link set dev eth0 up

使用 ip 命令,我们还可以添加/删除默认的网关,就像这样: ip route add default via 192.168.1.254

如果你想获得网络接口的更多细节,你可以编辑传输队列,给速度慢的接口设置一个低值,给速度快的设置一个较高值。那么你需要像这样做 : ip link set txqueuelen 10000 dev eth0

该命令设置了一个很长的传输队列。你应该设置一个最适合你硬件的值。 还可以用 ip 命令为网络接口设置最大传输单元。 ip link set mtu 9000 dev eth0 一旦你做了改变,便可以使用 ip a list eth0 来检验是否生效。

#

管理路由

其实还可以使用 ip 命令来管理系统路由表。这是 ip 命令非常有用的一个功能。并且你应该小心使用。

查看所有路由表 ip r

现在你想要路由的所有流量从 eth0 网卡的 192.168.1.254 网关通过,那么请这样做: ip route add 192.168.1.0/24 dev eth0

删除这个路由: ip route del 192.168.1.0/24 dev eth0

<a name="23-ping"></a>
### 2.3 `ping`

检测到目标主机是否连接正常

$ ping IP地址

检测本地网卡工作正常

$ ping 127.0.0.1


- `ping` 一般用于检测当前计算机到目标计算机之间的网络 **是否通畅**,**数值越大,速度越慢**
> - `ping` 的工作原理与潜水艇的声纳相似,`ping` 这个命令就是取自 **声纳的声音**
> - 网络管理员之间也常将 `ping` 用作动词 —— **ping 一下计算机X,看他是否开着**

原理:网络上的机器都有 **唯一确定的 IP 地址**,我们给**目标 IP 地址**发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在
> 提示:在 Linux 中,想要终止一个终端程序的执行,绝大多数都可以使用 `CTRL + C`

<a name="91d92ae3"></a>
## 03. 远程登录和复制文件
| 序号 | 命令 | 对应英文 | 作用 |
| --- | --- | --- | --- |
| 01 | ssh 用户名@ip | secure shell | 关机/重新启动 |
| 02 | scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 | secure copy | 远程复制文件 |

<a name="0941573c"></a>
### 3.1 `ssh` 基础(重点)
在 Linux 中 SSH 是 **非常常用** 的工具,通过 **SSH 客户端** 我们可以连接到运行了 **SSH 服务器** 的远程机器上<br />![](media/14934132718311/001_SSH%E7%A4%BA%E6%84%8F%E5%9B%BE.png#)

- **SSH 客户端**是一种使用 `Secure Shell(SSH)` 协议连接到远程计算机的软件程序
- `SSH`是目前较可靠,**专为远程登录会话和其他网络服务**提供安全性的协议
   - 利用 `SSH 协议` 可以有效**防止远程管理过程中的信息泄露**
   - 通过 `SSH 协议` 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗
- `SSH` 的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度
<a name="057c1820"></a>
#### 1) 域名 和 端口号
<a name="190980c7"></a>
##### 域名

- 由一串 **用点分隔** 的名字组成,例如:`www.itcast.cn`
- 是 **IP 地址** 的别名,方便用户记忆
<a name="39c76443"></a>
##### 端口号

- **IP 地址**:通过 **IP 地址** 找到网络上的 **计算机**
- **端口号**:通过**端口号**可以找到**计算机上运行的应用程序**
   - **SSH 服务器** 的默认端口号是 `22`,如果是默认端口号,在连接的时候,可以省略
- 常见服务端口号列表:<br />
| 序号 | 服务 | 端口号 |
| --- | --- | --- |
| 01 | SSH 服务器 | 22 |
| 02 | Web 服务器 | 80 |
| 03 | HTTPS | 443 |
| 04 | FTP 服务器 | 21 |

> 提示:有关 **端口号**的详细内容,在就业班会详细讲解!

<a name="1ef5b7ef"></a>
#### 2) SSH 客户端的简单使用

ssh [-p port] user@remote


- `user` 是在远程机器上的用户名,如果不指定的话默认为当前用户
- `remote` 是远程机器的地址,可以是 **IP**/**域名**,或者是 **后面会提到的别名**
- `port` 是 **SSH Server 监听的端口**,如果不指定,就为默认值 `22`
> 提示:
> - 使用 `exit` 退出当前用户的登录
> 
注意:
> - `ssh` 这个终端命令只能在 `Linux` 或者 `UNIX` 系统下使用
> - 如果在 `Windows` 系统中,可以安装 `PuTTY` 或者 `XShell` 客户端软件即可
> 
提示:
> - 在工作中,SSH 服务器的端口号很有可能**不是 22**,如果遇到这种情况就需要使用 `-p` 选项,指定正确的端口号,否则无法正常连接到服务器

<a name="3f564c07"></a>
#### 3) Windows 下 SSH 客户端的安装

- `Putty` [http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html](http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
- `XShell` [http://xshellcn.com](http://xshellcn.com)
> 建议从官方网站下载正式的安装程序

<a name="78ac174d"></a>
### 3.2 `scp`(掌握)

- scp 就是 `secure copy`,是一个在 Linux 下用来进行 **远程拷贝文件** 的命令
- 它的**地址格式与 ssh 基本相同**,**需要注意的是**,在指定端口时用的是大写的 `-P` 而不是小写的

![](media/14934132718311/002_SCP%E7%A4%BA%E6%84%8F%E5%9B%BE.png#)

把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py

注意:: 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径

scp -P port 01.py user@remote:Desktop/01.py

把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py

scp -P port user@remote:Desktop/01.py 01.py

加上 -r 选项可以传送文件夹

把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop

scp -r demo user@remote:Desktop

把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹

scp -r user@remote:Desktop demo

| 选项 | 含义 |
| --- | --- |
| -r | 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
| -P | 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口 |

> 注意:
> - `scp` 这个终端命令只能在 `Linux` 或者 `UNIX` 系统下使用
> - 如果在 `Windows` 系统中,可以安装 `PuTTY`,使用 `pscp` 命令行工具或者安装 `FileZilla` 使用 `FTP` 进行文件传输

<a name="filezilla"></a>
#### `FileZilla`

- 官方网站:[https://www.filezilla.cn/download/client](https://www.filezilla.cn/download/client)
- `FileZilla` 在传输文件时,使用的是 `FTP 服务` 而不是 `SSH 服务`,因此端口号应该设置为 `21`
<a name="77bff4af"></a>
### 3.3 SSH 高级(知道)

- 免密码登录
- 配置别名
> 提示:有关 SSH 配置信息都保存在用户家目录下的 `.ssh` 目录下

<a name="6bcae22e"></a>
#### 1)免密码登录
<a name="52b36576"></a>
##### 步骤

- 配置公钥
   - 执行 `ssh-keygen` 即可生成 SSH 钥匙,一路回车即可
- 上传公钥到服务器
   - 执行 `ssh-copy-id -p port user@remote`,可以让远程服务器记住我们的公钥
<a name="4c29f66b"></a>
##### 示意图
![](media/14934132718311/003_SSH%20%E5%85%8D%E5%AF%86%E7%A0%81%E7%A4%BA%E6%84%8F%E5%9B%BE.png#)
> 非对称加密算法
> - 使用 **公钥** 加密的数据,需要使用 **私钥** 解密
> - 使用 **私钥** 加密的数据,需要使用 **公钥** 解密

<a name="2d858b9e"></a>
#### 2) 配置别名
每次都输入 `ssh -p port user@remote`,时间久了会觉得很麻烦,特别是当 `user`, `remote` 和 `port` 都得输入,而且还不好记忆<br />而 **配置别名** 可以让我们进一步偷懒,譬如用:`ssh mac` 来替代上面这么一长串,那么就在 `~/.ssh/config` 里面追加以下内容:

Host mac HostName ip地址 User itheima Port 22 `` **保存之后,即可用ssh mac实现远程登录了,scp` 同样可以使用**