Fork me on GitHub

Linux常用命令之远程管理

之前的一篇文章讲到了Linux操作系统的与目录和文件相关的终端命令,目录和文件相关的命令也是我们用的最多的命令。这篇文章我们来谈谈与远程管理有关的终端命令,主要包含以下三块:

  • 关机/重启
    shutdown

  • 查看或者配置网卡信息
    ifconfig
    ping

  • 远程登录和复制文件
    ssh
    scp

下面我们就来具体来看看这几个命令。


shutdown

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

常见的用法为:

1
~/Documents$ shutdown 选项 时间

注意

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

常用命令示例:

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

# 立刻关机,其中 now 表示现在
$ shutdown now

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

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

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

ifconfig

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

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

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

提示:

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

ping

ping一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢

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

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

Notes:

  • ping的工作原理与潜水艇的声纳相似,ping这个命令就是取自声纳的声音
  • 网络管理员之间也常将ping用作动词——ping一下计算机X,看他是否开着

ping的原理:
网络上的机器都有
唯一确定的IP地址,我们给目标IP地址**发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在


ssh基础(重点)

在Linux中SSH是非常常用的工具,通过SSH客户端我们可以连接到运行了SSH服务器的远程机器上.

SSH示意图

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

1) 域名和端口号

域名:

  • 由一串用点分隔的名字组成,例如:www.baidu.com
  • IP地址的别名,方便用户记忆

端口号:

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

1) SSH客户端的简单使用

1
ssh [-p port] user@remote
  • user是在远程机器上的用户名,如果不指定的话默认为当前用户
  • remote是远程机器的地址,可以是IP/域名,或者是后面会提到的别名
  • portSSH Server监听的端口,如果不指定,就默认为22
  • 使用exit退出当前用户的登录

注意:

  • SSH这个终端命令只能在Linux或者UNIX系统下使用
  • 如果在Windows系统中,可以安装PuTTY或者XShell客户端软件即可

scp

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

SCP示意图

1
2
3
4
5
6
7
8
9
10
11
12
13
# 把本地当前目录下的01.py文件复制到远程Home目录下的Desktop/01.py
# 注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py

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

# 加上-r选项可以传送文件夹
# 把当前目录下的demo文件夹复制到远程Home目录下的Desktop
scp -r demo user@remote:Desktop

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

注意:

  • scp这个终端命令只能在Linux或者UNIX系统下使用
  • 如果在Windows系统中,可以安装PuTTY, 使用pscp命令行工具或者安装 FileZilla使用FTP进行文件传输
  • FileZilla在传输文件时,使用的是FTP服务而不是SSH服务,因此端口号应该设置为 21

ssh高级(知道)

  • 免密码登陆
  • 配置别名

注意:有关SSH配置信息都保存在用户家目录下的.ssh目录下

1) 免密码登陆

步骤:

  • 配置公钥:
    • 执行ssh-keygen即可生成SSH钥匙,一路回车即可
  • 上传公钥到服务器:
    • 执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

示意图:

SSH免密码示意图

非对称加密算法

  • 使用公钥加密的数据,需要使用私钥解密
  • 使用私钥加密的数据,需要使用公钥解密

2) 配置别名

每次都输入ssh -p port user@remote,时间久了会觉得很麻烦,特别是当user, remoteport都得输入,而且还不好记忆

配置别名可以让我们进一步偷懒,譬如用:ssh mac来替代上面这么一长串,那么就在 ~/.ssh/config里面追加以下内容:

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

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

----------------本文结束感谢您的阅读----------------
坚持原创技术分享,您的支持将鼓励我继续创作!
0%