Linux 就该这么学 CH09 使用ssh服务管理远程主机
1 、配置网络服务
1)配置网络参数
五种配置网络的方法:命令行,编译网络配置文件,nmtui(旧版ui界面),nm-connection-edit(新版ui),VM虚拟机右上角图标等。
这里配置虚拟机的网卡IP为192.168.10.10/24。需要电脑上的物理网卡net1 的 IP设置为192.168.10.1/24。
a)、命令行
ifconfig eno16777736 192.168.10.20/24 ##配置网卡的IP和掩码
ifconfig ##查询网卡配置信息
systemctl restart network #重启网卡
b)、编辑网络配置文件
[root@localhost Desktop]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet #网络接口类型
BOOTPROTO=none #配置协议,DHCP,static or none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736 #网卡名称
UUID=f2c81611-76c6-4089-970c-6b0eae8d91f0
ONBOOT=yes #是否开启网卡,yes开启,no关闭。这里很重要,非常重要。
IPADDR0=192.168.10.10 #ip地址
PREFIX0=24 #掩码,也可以是NETMASK=255.255.255.0
HWADDR=00:0C:29:39:AC:32 #mac地址
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
[root@localhost Desktop]# systemctl restart network
上面注释部分很重要,也是常修改的地方。最后重启网络服务。
c)、nmtui
[root@localhost Desktop]# nmtui
上图中先将IPv4改为Manual,然后选择show.
上图在address的地方直接输入ip地址。
最后需要重启服务。
[root@localhost Desktop]# systemctl restart network
d)、nm-connection-edit
[root@localhost Desktop]# nm-connection-editor
最后重启网络服务。
e)、VM虚拟机右上角的网络图标
最后通过上图on/off按键重启网络服务。
2)创建网络会话
RHEL和CentOS默认使用NetworkManger 来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。使用nmcli命令来管理NetworkManger服务。nmcli是一款基于命令行的网络配置工具,功能丰富,参数众多。
RHEL7支持网络会话:将网卡配置文件保存成模版,可以实现在不同的使用环境下网络配置信息的快速切换。
用nmcli命令可以按照"connection add con-name type ifname"的格式来创建网络会话。
具体参数意义如下:
- con-name : 网络会话名称。
- type : 网络类型。
- ifname: 网卡名称。
- autoconnect:网络会话默认是否自动激活,yes是no否。
- ip4 : 设置ip地址和掩码。
- gw4 : 网关。
- add/delect :添加或删除。
- up/down : 启用或禁用。
例程: 建立一个指定ip和网关的company网络会话和一个人自动获取地址的网络会话house.
nmcli connection show #查看已有的网络会话,DEVICE一行如果有值则说明那个会话在启用。
nmcli connection add con-name company ifname eno16777728 autoconnect no type ethernet ip4 192.168.10.15/24 gw4 192.168.10.1 #创建company
nmcli connection add con-name house type ethernet ifname eno16777728 #DHCP 模式
nmcli connection show #显示已经创建的会话信息
nmcli connection up house #启用网络会话house
ifconfig #可以看到此时的IP,系统分配的
nmcli connection show #可以看到名为house的网络会话DEVICE列有显示对应的网卡名称。
nmcli connection down house #关闭house网络会话
nmcli connection show #可以看到DEVICE列没有值了。
nmcli connection delete house # 删除网络会话house
nmcli connection show #查看创建的所有网络会话。
如果使用的是虚拟机,则需要把虚拟机的网卡切换成桥接模式。如果切换则需要重启虚拟机。
3)绑定两块网卡
网卡绑定技术:对2块以上的网卡进行绑定技术,在工作中网卡会共同传输数据,网络传输速度更快;当其中一块网卡出现故障之后,另外一块网卡会立即自动顶替,保证网络传输不间断。注意,只有网卡的模式相同,才能进行绑定技术。
实例:对两块网卡实施网卡绑定技术。
- 1、确保有2块以上的设备。并且处于相同的模式。
- 2、配置网卡绑定的参数,这些原本独立的网卡设备要被配置成从属网卡(slave,从属网卡不能有自己的IP地址信息),以支持网卡绑定。随后创建主网卡配置文件,编辑ip地址等网卡参数。
- 3、 让linux内核支持网卡绑定驱动。常见的网卡绑定驱动的模式:
mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连接的交换设备上进行端口的聚合来支持绑定技术。
mode1(自动备援模式):平时只有一块网卡,在它故障之后自动替换为另外的网卡。
mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无需交换机设备提供辅助支持(在内核层面实现)。 - 重启网络服务后网卡绑定操作即完成。
cd /etc/sysconfig/network-scripts/ #切换到网卡配置文件所在目录
vim ifcfg-eno16777728 #修改网卡eno16777728配置参数
##### 下面为文件内容####################
TYPE=Ethernet #网卡类型为以太网
BOOTPROTO=none #地址分配模式为默认
DEVICE=eno16777728 #网卡设备名称为eno16777728
ONBOOT=yes #是否启用网卡(yes启用no禁用)
USERCTL=no #不允许用户通过命令行控制
MASTER=bond0 #主网卡设备名称(与主网卡绑定)
SLAVE=yes #是否为从属网卡(yes是no否)
######## end #########################
vim ifcfg-eno33554968 #修改网卡eno33554968配置参数(没有配置文件就创建)
##### 下面为文件内容####################
TYPE=Ehternet
BOOTPROTO=none
DEVICE=eno33554968
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
######## end #########################
vim ifcfg-bond0 #创建主网卡bond0的配置文件,编辑配置参数
##### 下面为文件内容####################
TYPE=Ethernet
BOOTPROTO=none
DEVIVE=bond0
ONBOOT=yes
USERCTL=no
IPADDR=192.168.10.10 #ip地址
PREFIX=24 #子网掩码,相当于255.255.255.0
DNS=192.168.10.1 #DNS地址
NM_CONTROLLED=no #NM(Network Manager)让网卡保证能够运行并对网卡进行基本管理。网卡绑定是高级操作,必须让网卡不再受NM控制!
######## end #########################
vim /etc/modprobe.d/bond.conf #创建一个用于网卡绑定的驱动文件,使绑定后的主网卡bond0支持绑定技术
##### 下面为文件内容####################
alias bond0 bonding #让bond0网卡设备支持绑定技术
options bond0 miimon=100 mode=6 #定义网卡以mode6模式绑定,且出现故障时自动切换的时间为100毫秒
######## end #########################
systemctl restart network #重启网卡服务
本机执行ping命令测试连通性,然后故意移除一块网卡设备,ping的测试一般来说只会丢一个数据包,ping测试继续连通,说明网卡绑定技术配置成功。
2、远程控制服务
1)配置ssh服务
SSH(secure shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux的首选方式。之前一直使用FTP或者Telnet来进行登录,但是它们都以明文的方式在网络中传播帐号密码和数据信息,因此很不安全。
想要使用SSH协议来远程登录Linux 系统,则需要部署sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,有两种安全验证的方法:
- 基于口令的验证–用帐号和密码来验证登录。
- 基于密钥的验证–需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并于服务器中的公钥进行比较;该方式相对来说更安全。
配置服务的步骤:
- Linux中一切都是文件;
- 部署服务就是修改服务的配置文件;
- 要运行最新参数,就要重启对应的服务;
- 将配置的服务加入到启动项中,保证重启后依然有效.
一般来说,服务的配置文件的保存路径及命名:
- 主配置文件:/etc/服务名称/服务名称.conf
- 普通文件:/etc/服务名称
sshd服务的配置信息保存在/etc/ssh/sshd_config文件中。
sshd服务配置文件中包含的参数以及作用:
RHEL7 默认安装并启用了sshd服务。
SSH 一般分为服务端和客户端,而且默认都安装了,使用下面的命令可以查看是否安装了服务端和客户端。
rpm -qa |grep ssh
## 下面是打印信息
libssh2-1.4.3-8.el7.x86_64
openssh-6.4p1-8.el7.x86_64
openssh-server-6.4p1-8.el7.x86_64 ##服务端
openssh-clients-6.4p1-8.el7.x86_64 ##客户端
### 打印结束
ssh命令:用于进行远程连接。格式:ssh [参数] 主机IP地址。
实例:RHCSA考题!配置sshd服务,禁止以root管理员身份远程登录服务器。
ssh 192.168.10.10 #远程登录主机192.168.10.10,本机也可以用ssh登录本机
exit #退出登录
vim /etc/ssh/sshd_config #修改sshd主配置文件
48 PermitRootLogin no #修改48行的参数为no,表示不允许root管理员远程登录,为了安全
systemctl restart sshd #重启sshd服务
systemctl enable sshd #把sshd服务加入到开机启动项中
ssh 192.168.10.10 #用root登录,提示Permission denied
ssh ff@192.16.10.10 #用普通账户登录,可以登录上。
2)安全密钥验证
加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本可以直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分。在传输数据前先使用公钥对数据加密处理,然后再行传送。只有掌握私钥的用户才能解密这段数据。黑客即便截获了数据,一般也很难将其破译为明文信息。大大提高信息安全性。
在生产环境中使用密码进行口令验证终归存在着被暴力破解或嗅探截获的风险。如果正确配置了密钥验证方式,sshd服务程序将更加安全。
配置ssh以密钥方式验证步骤:
- 在客户端主机(192.168.10.20)生成“密钥对”(生成公钥和私钥)。
- 在客户端中把生成的公钥传送给服务端(192.168.10.10)。
- 在服务端,修改sshd配置文件,使其只允许密钥验证,拒绝口令验证。修改后重启sshd服务。
- 在客户端远程登录服务器测试是否配置成功。
##下面在客户端操作
ssh-keygen #客户端操作。生成“密钥对”(公钥和私钥)。会有3次确认,直接回车就行
ssh-copy-id ff@192.168.10.10 #客户端操作。把生成的公钥文件传送给服务端。会提示是否继续连接,yes。还会提示要求输入服务端的ff密码,因为上面把root禁止登陆了,所以这里用ff登录
######### 下面再服务器端操作###########
vim /etc/ssh/sshd_config #服务端操作。修改ssh服务配置文件
####文件内容的第78行###########
78 PasswordAuthentication no #服务端操作。拒绝口令验证
###文件关闭##########
systemctl restart sshd #服务端操作。重启sshd服务
## 下面在客户端操作
ssh ff@192.168.10.10 #客户端操作。尝试远程登录服务端主机,登录成功,不需要输入密码
3)远程传输命令
scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令。格式:scp [参数] 本地文件 远程帐户@远程IP地址:远程目录。
- 上传:scp 文件名 对方主机:/目录
- 下载:scp 对方主机:/目录/文件名 /本地目录
scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。
scp命令中可用的参数及作用
参数 | 作用 |
---|---|
-v | 显示详细的连接进度 |
-P | 指定远程主机的sshd端口号 |
-r | 递归,用于传送文件夹 |
-6 | 使用IPv6协议 |
在使用scp命令把文件从本地复制到远程主机时,首先需要以绝对路径的形式写清本地文件的存放位置(事实证明,相对路径也可以,但你要知道你在哪里)。如果要传送整个文件夹内的所有数据,还需要额外添加参数-r进行递归操作。然后写上要传送到的远程主机的IP地址,远程服务器便会要求进行身份验证了。当前用户名称为root,而密码则为远程服务器的密码。如果想使用指定用户的身份进行验证,可使用用户名@主机地址的参数格式。最后需要在远程主机的IP地址后面添加冒号,并在后面写上要传送到远程主机的哪个文件夹中。只要参数正确并且成功验证了用户身份,即可开始传送工作。由于scp命令是基于SSH协议进行文件传送的,如果客户端和服务端设置好了密钥验证,则在传输文件时,并不需要账户和密码。
实例:在客户端创建一个文本文件A,上传到服务端,再从服务端新建文本文件B,从客户端中把服务端的B下载下来。
##### 绝对路径操作#######
##*********服务端操作,使用账号ff login,环境变量也为ff的
echo "ni ma bi" >> B.txt #服务端操作。新建一个文本文档B.txt
##********客户端操作,不用ssh到服务端,如果ssh了,则可以先退出
echo "cao ni ma" >> A.txt #客户端操作。新建一个文本文档A.txt
scp /root/Desktop/A.txt ff@192.168.10.10:/home/ff/Desktop #客户端操作。把文件A上传给服务端的/home/ff/Desktop路径下
scp ff@192.168.10.10:/home/ff/Desktop/B.txt /etc #客户端操作。把服务端的B文件下载到本机的/etc目录下
#####相对路径操作#####
##*********服务端操作,使用账号ff login,环境变量也为ff的
echo "ni ma bi" >> B.txt #服务端操作。新建一个文本文档B.txt
##********客户端操作,不用ssh到服务端,如果ssh了,则可以先退出
echo "cao ni ma" >> A.txt #客户端操作。新建一个文本文档A.txt
scp A.txt ff@192.168.10.10:/home/ff/Desktop #客户端操作。把当前目录中的文件A.txt上传给服务端的/home/ff/Desktop路径下
scp ff@192.168.10.10:/home/ff/Desktop/B.txt . #客户端操作。把服务端的B文件下载到本机的当前目录下
3、配置YUM仓库
按下面的步骤配置yum仓库之后才可以使用yum 来安装软件。
1、在虚拟机种设置CD/DVD,将rhel 7的ios镜像连接上。
2、创建挂载目录。
3、使用vim文本编辑器创建Yum的仓库配置文件。
4、此时就可以安装软件了,但是为了能让yum仓库一开机就有效,则需要写到配置文件fstab中。
5、挂载,然后下载软件。
mkdir -p /media/cdrom
vim /etc/yum.repos.d/rhel7.repo #rhel7为文件名字,可以改变,但是后缀要是repo
##*********内容开始*************
[rhel7]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
##*******内容结束*************
vim /etc/fstab
##******内容*********
#在最后加上
/dev/sr0 /media/cdrom iso9660 defaults 0 0
##******内容结束***********
mount -a #检查有没有错误
mount /dev/sr0 /media/cdrom #挂载,会提示read-only
yum install -y screen ##安装软件
4、不间断会话服务
当与远程主机的会话被关闭时,在远程主机上运行的命令也随之被中断。
如果正在使用命令来打包文件,或者正在使用脚本安装某个服务程序,中途是绝对不能关闭在本地打开的终端窗口或断开网络链接的,甚至是网速的波动都有可能导致任务中断,否则只能重新进行远程链接并重新开始任务。
screen是一款能够实现多窗口远程控制的开源服务程序,是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还可以使用screen服务程序同时在多个远程会话中自由切换,能够做到实现如下功能:
- 会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
- 多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
- 会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。
安装screen程序(前提是配置好Yum仓库):yum install -y screen
screen命令:用于管理远程会话。
常用参数:
参数 | 功能 |
---|---|
-S | 创建会话窗口 |
-d | 将指定会话进行离线处理 |
-r | 恢复指定会话 |
-x | 一次性恢复所有会话 |
-ls | 显示当前已有会话 |
-wipe | 把目前无法使用的会话删除 |
1)管理远程会话
演示使用screen来创建会话
screen -S backup #创建会话backup ,会闪烁一下,并打开一个新的窗口,有screen O标志
screen -ls #查看已有会话,发现会话backup处于连接(attached)状态
exit #退出会话backup
screen vim memo.txt #在创建会话的同时执行编辑文件memo.txt的命令,命令执行完毕后screen会话也会自动结束
##*********begin
heheda #写入文本内容
##***********end
screen -S linux #创建会话linux
tail -f /var/log/messages #在会话linux里执行该命令,
#故意强行关闭会话窗口
screen -ls #重新打开命令行窗口,查看已有会话,发现会话linux处于断开(Detached)状态
screen -r linux #恢复会话linux,可以发现刚刚关闭窗口导致中断的命令可以继续执行
2)会话共享服务
screen会话共享:当多个用户同时控制主机的时候,它可以把屏幕内容共享出来,每个用户都可以看到相同的内容。
实例:客户端A(192.168.10.20)远程登录到服务端(192.168.10.10),创建一个screen会话,然后客户端B(192.168.10.30)远程登录到服务端,执行screen -x(获取远程会话)。两台客户端就可以看到相同内容。
ssh 192.168.10.10 #客户端A操作。远程登录到服务端(192.168.10.10)
screen -S test #客户端A操作。创建一个screen会话
ssh 192.168.10.10 #客户端B操作。远程登录到服务端
screen -x #客户端B操作。获取远程会话
参考:
https://www.cnblogs.com/kaminwu/p/10936218.html