远程管理与 SSH

远程管理与 SSH

这一篇学习远程管理相关的命令。服务器通常不在你身边,学会远程管理是每个 Linux 使用者的必备技能。

关机与重启

命令 对应英文 作用
shutdown 选项 时间 shutdown 关机或重新启动

shutdown 命令可以安全地关闭或重新启动系统。

选项 含义
-r 重新启动

提示

  • 不指定选项和参数,默认表示 1 分钟之后关闭电脑
  • 远程维护服务器时,最好不要关闭系统,而应该重新启动系统

常用命令示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 重新启动操作系统,now 表示现在
$ shutdown -r now

# 立刻关机
$ shutdown now

# 系统在今天的 20:25 关机
$ shutdown 20:25

# 系统再过十分钟后自动关机
$ shutdown +10

# 取消之前指定的关机计划
$ shutdown -c

另外还有两个更直接的命令:poweroff 立即关机,reboot 立即重启。

查看网络信息

网卡和 IP 地址

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

可以把电脑比作电话,网卡相当于 SIM 卡,IP 地址相当于电话号码。每台电脑的 IP 地址不能相同,否则会出现 IP 冲突,无法正常通讯。

ifconfig 查看网卡

1
2
3
4
5
# 查看网卡配置信息
$ ifconfig

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

一台计算机可能有物理网卡和多个虚拟网卡,Linux 中物理网卡的名字通常以 ensXX 表示。127.0.0.1 被称为本地回环地址,一般用来测试本机网卡是否正常。

ping 检测网络

1
2
3
4
5
# 检测到目标主机是否连接正常
$ ping IP地址

# 检测本地网卡工作正常
$ ping 127.0.0.1

ping 用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大速度越慢。它的原理和潜水艇的声纳相似:给目标 IP 发送一个数据包,对方返回一个数据包,根据返回的数据包和时间确定目标主机的存在。

在 Linux 中,想要终止一个终端程序的执行,绝大多数都可以使用 Ctrl + C。

SSH 远程登录

什么是 SSH

SSH(Secure Shell)是建立在应用层和传输层基础上的安全协议,专为远程登录会话和其他网络服务提供安全性。它常用于远程登录和用户之间的资料拷贝。

利用 SSH 协议可以有效防止远程管理过程中的信息泄露,对所有传输的数据进行加密,还能防止 DNS 欺骗和 IP 欺骗。SSH 的另一优点是传输的数据可以压缩,加快传输速度。

客户端和服务器的关系

如果 A 机器想被 B 机器远程控制,那么 A 机器需要安装 SSH 服务器,B 机器需要安装 SSH 客户端。

域名和端口号

  • 域名:由一串用点分隔的名字组成(如 www.google.com),是 IP 地址的别名,方便记忆
  • 端口号:通过 IP 地址找到计算机,通过端口号找到计算机上运行的应用程序

常见服务端口号:

服务 端口号
SSH 服务器 22
Web 服务器 80
HTTPS 443
FTP 服务器 21

SSH 客户端的使用

1
ssh [-p port] user@remote
  • user:远程机器上的用户名,不指定则默认为当前用户
  • remote:远程机器的地址,可以是 IP、域名或别名
  • port:SSH 服务器监听的端口,不指定则为默认值 22

提示

  • 使用 exit 退出当前用户的登录
  • ssh 命令只能在 Linux 或 UNIX 系统下使用
  • 在 Windows 系统中,可以安装 PuTTY 或 XShell 客户端软件
  • 工作中 SSH 服务器的端口很可能不是 22,需要用 -p 选项指定正确端口

安装 SSH 服务器

Ubuntu 默认没有安装 SSH 服务器,需要手动安装:

1
$ sudo apt install openssh-server

安装之后,其他系统才能通过 SSH 工具远程登录你的机器。

scp 远程复制文件

scp 是 secure copy,用于远程拷贝文件。它的地址格式与 ssh 基本相同,但指定端口时用大写的 -P。

1
2
3
4
5
6
7
8
# 把本地当前目录下的 01.py 复制到远程家目录下的 Desktop/01.py
scp -P port 01.py user@remote:Desktop/01.py

# 把远程家目录下的 Desktop/01.py 复制到本地当前目录
scp -P port user@remote:Desktop/01.py 01.py

# 加上 -r 选项可以传送文件夹
scp -r demo user@remote:Desktop
选项 含义
-r 递归复制目录下的所有子目录和文件
-P 指定端口(大写)

在 Windows 系统中,可以安装 PuTTY 使用 pscp 命令行工具,或安装 FileZilla 使用 FTP 进行文件传输。

SSH 高级:免密码登录

每次登录都要输密码很麻烦,SSH 支持免密码登录。

配置公钥

1
2
# 生成 SSH 钥匙,一路回车即可
$ ssh-keygen

上传公钥到服务器

1
$ ssh-copy-id -p port user@remote

这样远程服务器就记住了我们的公钥,下次登录就不需要密码了。

非对称加密算法

使用公钥加密的数据,需要用私钥解密;使用私钥加密的数据,需要用公钥解密。公钥可以公开,私钥必须保密。

配置别名

每次都输入 ssh -p port user@remote 很麻烦,可以配置别名。在 ~/.ssh/config 里追加:

1
2
3
4
Host mac
HostName ip地址
User itheima
Port 22

保存之后,就可以用 ssh mac 实现远程登录了,scp 同样可以使用。

小结

这一篇我们学习了关机重启、网络配置和 SSH 远程管理。下一篇学习用户和权限管理。

上一篇:文件和目录操作

下一篇:用户与权限管理