Remote management
- 关机/重启
shutdown
- 查看或配置网卡信息
ifconfig
ping
- 远程登录和配置文本
ssh
scp
01. 关机&重启
命令shut [选项] [时间]
选项有 -r
用以重新启动
注意:
不指定选项和参数,默认表示1分钟之后关闭电脑
远程维护服务器时,最好不要关闭系统,而应该重新启动系统
常用命令示例:
# 重新启动操作系统
$ shutdown -r now
# 立即关机,其中now表示现在
$ shutdown now
# 系统在今天的20:00关机
$ shutdown 20:00
# 系统再过10分钟之后自动关机
$ shutdown +10
# 取消之前指定的关机计划
$ shutdown -c
02. 查看或配置网卡信息
ifconfig
查看/配置计算机当前的网卡配置信息
ping ip地址
检测目标ip地址的连接是否正常
网卡和IP地址
-
网卡是一个专门负责网络通讯的硬件设备
连接网线的硬件设备就可以叫做网卡,也可以叫做有线网卡,而WiFi是无线网卡,有线网卡还是无线网卡都是硬件设备,负责计算机之间的网络通讯 -
IP地址是设置在网卡上的地址信息
我们可以把电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码
- 每台联网的电脑上都有IP地址,是保证电脑之间正常通讯的重要设置
每台电脑的IP地址不能相同,否则会出现IP地址冲突,并且没有办法正常通讯
如何通过ifconfig
直接找到网卡信息 ifconfig | grep inet
这个命令行里面使用了管道的概念
03. 远程登录和复制文件
ssh 用户名@ip地址
这里面ssh意思是 secure shell的意思
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径
远程复制文件 secure copy
01. ssh 基础
在Linux中SSH是非常重要的工具,通过SSH客户端我们可以连接到SSH服务器的远程机器上
在工作中我们很少会现场管理我们的服务器,绝大部分时间我们都是通过我们的电脑远程管理我们的服务器
首先我们需要在自己的服务器上安装一个SSH服务器软件,然后在自己的电脑上安装一个SSH客户端软件,这里面的服务器软件和客户端软件都是一个软件,两边安装好之后,就可以在自己的电脑上远程登录到服务器上进行维护管理,在Ubuntu中或者Mac中服务器软件和客户端软件都是默认安装的(windows现在也有了)
- SSH客户端是一种使用
Secure Shell (SSH)
协议连接到远程计算机的软件程序 - SSH是目前较可靠,转为远程登录会话和其他网络服务提供安全性的协议
- 数据传输是加密的,可以防止信息泄露
- 通过SSH协议可以对所有数据进行加密,也能够防止DNS欺骗和IP欺骗
- SSH的另一个优点是传输的数据是经过压缩的,可以提高传输速度
1) 域名 和 端口号
域名
- 由一串 用点分隔 的名字组成,例如:
www.baidu.com
- 是IP的 别名,方便用户记忆
端口号
- IP地址:通过IP地址找到网络上的计算机
如果我们访问百度的服务器,为什么它会把我们想要的内容发送给我们,百度的服务器上面会有一个Web服务器的软件,专门管理服务器发送给我们什么内容,所以当我们访问服务器的时候,只有一个IP地址是不够的,要在IP地址后面接一个冒号,冒号后面接一个数字,通过这个数字找到服务器上的Web服务器软件,由这个软件给用户提供要访问的内容
- 端口号:通过端口号可以找到计算机上运行的应用程序
- SSH服务器 的默认端口号是
22
,如果是默认端口号,在连接的时候,可以省略
- SSH服务器 的默认端口号是
- 常见服务端口号列表
服务 | 端口号 |
---|---|
SSH服务器 | 22 |
Web服务器 | 80 |
HTTPS | 443 |
FTP服务器 | 21 |
通过IP地址找到计算机,通过端口号找到这台计算机上运行的服务器软件,由服务器软件提供给用户服务,这就是端口号的作用
在我们访问服务器的时候,每一个服务都有一个默认的端口,譬如Web服务器默认端口就是80,而SSH服务器默认端口就是22,如果我们在我们访问服务器的时候,没有指定端口,那么就会使用默认的端口,
2) SSH客户端的简单使用
ssh [-p port] user@remote
user
是在远程机器上的用户名,如果不指定的话默认为当前用户remote
是远程机器的地址,可以是IP或者域名,或者是 后面提到的别名port
是SSH Server监听的端口,如果不指定,就是默认值22
02. scp(这个较为重要)
- scp就是
secure copy
,是一个在Linux下用来进行远程拷贝文件的命令 - 它的地址格与SSH基本相同,需要注意的是,在指定端口是用的是大写的
-P
而不是小写的
$ 把本地当前目录下的 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中需要安装其他软件进行FTP进行文件传输
03. SSH高级
+ 免密码登录
+ 配置别名
有关SSH配置信息都保存在家目录下的
.ssh
目录下
在.ssh文件目录下,当我们第一次连接一个陌生的主机的时候,系统会提示我们是否授权,一旦我们授权,我们连接主机的信息就会保存到.ssh文件中的known_hosts
文件中,保存之后,下一次连接的时候就不会再次提示我们授权了
1) 免密码登录 -> 和github中是一样的
步骤
- 配置公钥
- 执行
ssh-keygen
即可生成SSH钥匙,一路回车即可
- 执行
- 上传公钥到服务器
- 执行
ssh-copy-id -p port user@remote
可以让远程服务器记住我们的公钥
- 执行
工作原理:
在SSH客户端通过ssh-keygen
命令生成两个文件id_rsa.pub
,称之为公钥,另外一个是id_rsa
称之为私钥
公钥和私钥的联系:非对称加密算法
- 使用公钥加密的数据,需要使用私钥解密
- 使用私钥加密的数据,需要使用公钥解密
在客户端使用ssh-copy-id
命令把公钥文件复制到服务器,在SSH服务器的.ssh
文件夹中生成authorized_keys
文件
此时,在SSH客户端有一个私钥的密钥,已经通过ssh-copy-id
命令把公钥复制到了服务器,现在公钥在服务器,私钥在客户端,本地 使用私钥 对数据进行 加密\解密, 服务器上面 使用 公钥 对数据进行加密\解密
客户端要发送数据,就是用私钥进行加密,发送给服务器,服务器接收到,就使用公钥解密来解读加密的数据,服务器向客户端发送数据,要先使用公钥进行加密,加密之后通过网络发送给客户端,客户端接受之后,先用私钥先解密,解密之后就可以了解到数据的内容
2) 别名
每次都输入ssh -p port user@remote
,次数多了会优点麻烦,特别是当user
remote
port
每次都要输入,而且还不好记忆
而配置别名 可以让我们进一步偷懒,譬如用:ssh mac
来替代上面这么一长串,那么就在~/.ssh/config
里面追加一下内容
Host mac
HostName ip地址
User 远程服务器的用户名
Port 22
保存之后,即可用ssh mac
实现远程登录了,scp
同样可以使用