[toc]

7-Linux-管理-1

一、初始化进程

1、初始化进程介绍

Linux的启动一直采用init进程。

init进程是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。

init程序位于/sbin/init,它的主配置文件是/etc/initab

因为init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。并且启动脚本复杂。红帽RHEL 7系统已经替换掉了熟悉的初始化进程服务init,正式采用全新的systemd初始化进程服务。centos7是Redhad的分支,所以使用的也是systemd

Systemd它的设计目标是,为系统的启动和管理提供一套完整的解决方案。

d是守护进程(daemon)的缩写。Systemd这个名字的含义,就是它要守护整个系统。

使用了Systemd,就不需要再用init了。Systemd取代了initd,成为系统的第一个进程,所以它的pid也始终为1,其他进程都是它的子进程。

查看systemd进程

[root@localhost ~]# ps -ef | grep systemd
root          1      0  0 13:53 ?        00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root        554      1  0 13:53 ?        00:00:01 /usr/lib/systemd/systemd-journald
………………省略部分输出………………

2、运行级别

systemd用目标(target)代替了init中运行级别的概念。

查看/etc/inittab文件

上面的含义是:

当使用systemd时不再使用inittab。在这里进行的配置对系统没有影响。

systemd使用“目标”而不是运行级别。默认情况下,有两个主要目标:

  • multi-user.target:多用户目标,类似于运行级别3
  • graphical.target:图形化目标,类似于运行级别5

需要查看当前默认目标器,使用命令:systemctl get-default

需要设置默认目标器,使用命令:systemctl set-default TARGET.target

systemd与init的区别以及作用
init运行级别systemd目标名称systemd 目标作用
0poweroff.target关机
1rescue.target单用户模式
2multi-user.target多用户的文本界面
3multi-user.target多用户的文本界面
4multi-user.target多用户的文本界面
5graphical.target多用户的图形界面
6reboot.target重启

3、systemctl命令

systemctl管理服务的启动、重启、停止、重载、查看状态等常用的命令。

格式:systemctl 参数 服务名

示例:使用systemctl操作防火墙

① 启动

[root@localhost ~]# systemctl start firewalld

② 重启

[root@localhost ~]# systemctl restart firewalld

③ 停止

[root@localhost ~]# systemctl stop firewalld

④ 重新加载配置文件

[root@localhost ~]# systemctl reload firewalld

⑤ 查看服务状态

[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 五 2021-02-19 17:13:43 CST; 2min 3s ago
     Docs: man:firewalld(1)
 Main PID: 8646 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─8646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
………………省略部分输出………………

4、切换运行级别

① 切换到命令行界面

使用systemctl isolate命令切换:

输入:systemctl isolate multi-user.target

使用init命令切换:

输入:init 3

使用快捷键切换:

按下:ctrl+alt+F2

② 切换到图形界面

使用systemctl isolate命令切换:

输入:systemctl isolate graphical.target

使用init命令切换:

输入:init 5

③ 设置默认运行级别

注意:centos7以前在/etc/inittab文件中设置id:2:initdefault:。现在已经改变了设置方式。

命令设置

输入:systemctl set-default multi-user.target

[root@localhost ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from
/etc/systemd/system/default.target to
/usr/lib/systemd/system/multi-user.target.

设置完成使用systemctl set-default查看

[root@localhost ~]# systemctl get-default
multi-user.target
软链接设置

如果想要将系统默认的运行目标修改为多用户,无图形模式,可直接用ln命令把多用户模式目标文件连接到/etc/systemd/system/default.target

[root@localhost ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
[root@localhost ~]# systemctl get-default
graphical.target

二、用户与用户组管理

Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性。

任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个惟一的用户名和各自的密码。

用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。

要想实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除、修改以及用密码的管理。
  • 用户组的管理。

注意:在centos7中,用户身份有下面这些

  • 管理员UID0:系统的管理员用户。

  • 系统用户UID1~999

    Linux系统为了避免因某个服务程序出现漏洞而被黑客提权 至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。

  • 普通用户UID1000开始:是由管理员创建的用于日常工作的用户。

用户管理操作三个相关文件:

  • /etc/passwod:存储用户的关键信息
  • /etc/group:存储用户组的关键信息
  • /etc/shadow:存储用户的密码信息

1、用户管理

① 添加用户:useradd

语法格式:useradd [选项] 用户名

常用选项:

  • -d:指定用户的家目录(默认为/home/username)
  • -e:账户的到期时间,格式为yyyy/mm/dd
  • -u:指定该用户的默认UID
  • -g:指定一个初始的用户基本(主)组(必须已存在)
  • -G:指定一个或多个扩展(附加)用户组
  • -c:用户的备注,登录的简短描述,在图形的登录界面会显示
示例1:创建用户,不带任何选项
[root@localhost ~]# useradd test1

验证是否添加:

  • 查看/etc/passwd文件最后一行
  • 查看家目录是否存在增加用户的文件夹
  • 使用id命令验证

查看/etc/passwd文件最后一行。

[root@localhost ~]# tail -n 1 /etc/passwd
test1:x:1001:1001::/home/test1:/bin/bash

说明:

用户名:密码:用户UID:用户组ID:注释:家目录:shell解析器
  • 用户名:创建的新用户名称,登录时输入
  • 密码: 密码一般情况下都是x,表示密码的占位,真实密码保存在/etc/shadow文件中
  • 用户UID:用户的识别符
  • 用户组ID:标识所属的基本(主)用户组ID
  • 注释:通常是关于登录的简短描述。使用-c参数添加,默认是用户的全名称。
  • 家目录:用户登录进入系统之后的默认的位置
  • shell解析器:待用户进入系统后,用户输入指令后,该解析器会收集用户输入的指令,传递给内核处理,如果没有指定使用默认的解析器/bin/bash
示例2:创建用户,使用-u指定用户的uid
[root@localhost ~]# useradd -u 111 test2
[root@localhost ~]# id test2
uid=111(test2) gid=1002(test2) 组=1002(test2)

新用户会按照指定的uid进行创建,同时会自行创建与用户名相同的组以及同名的家目录。

示例3:创建用户,指定基本组,指定多个附加组的的新用户
[root@localhost ~]# useradd test3 -g 1000 -G 1001,1002
[root@localhost ~]# id test3
uid=1002(test3) gid=1000(tiger) 组=1000(tiger),1001(test1),1002(test2)

注意:

  • 指定的用户组必需存在

  • 不会在创建与用户名一样的用户组

  • /etc/passwd/文件中只会显示主组ID

    [root@localhost ~]# tail -n 3 /etc/passwd
    test1:x:1001:1001::/home/test1:/bin/bash
    test2:x:111:1002::/home/test2:/bin/bash
    test3:x:1002:1000::/home/test3:/bin/bash
    [root@localhost ~]# 
    
  • 附加组,在/etc/group文件中查看

    [root@localhost ~]# tail -n 3 /etc/group
    tiger:x:1000:tiger
    test1:x:1001:test3
    test2:x:1002:test3
    
示例3:创建用户并指定过期日期,同时指定过期后用户过期几日后永久停权。
[root@localhost ~]# useradd test4 -e "2021/02/28"

查看账户到期过期日期可使用chage命令查看,chage 代表更改时效change age,它更改用户密码到期信息。

[root@localhost ~]# chage -l test4
最近一次密码修改时间                  :2月 20, 2021
密码过期时间                  :从不
密码失效时间                  :从不
帐户过期时间                      :2月 28, 2021
两次改变密码之间相距的最小天数     :0
两次改变密码之间相距的最大天数     :99999
在密码过期之前警告的天数    :7

到期后登录

[tiger@localhost root]$ su test5
密码:
您的帐户已失效;请与系统管理员取得联系
su: 用户帐户已失效
② 修改用户:usermod

语法格式:usermod [选项] 用户名

常用选项:

  • -c:填写用户账户的备注信息,会在登录时显示
  • -d -m:参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
  • -e:账户的到期时间,格式为YYYY-MM-DD
  • -g:变更所属用户主组
  • -G:变更扩展用户组
  • -L:锁定用户禁止其登录系统
  • -U:解锁用户,允许其登录系统
  • -u:修改用户的UID
示例1:更新用户test1的备注信息,为你好 test1
[root@localhost ~]# usermod -c "你好 test1" test1

image

示例2:重新指定用户的家目录为test_1并自动把旧的数据转移过去
[root@localhost ~]# usermod -m -d /home/test_1 test1
[root@localhost ~]# ls /home
test_1  test2  test3  test4  test5  tiger
示例3:更新用户到期日期为 2021年03月11日
[root@localhost ~]# usermod -e 2021/03/11 test1
[root@localhost ~]# chage -l test1
最近一次密码修改时间                  :2月 20, 2021
密码过期时间                  :从不
密码失效时间                  :从不
帐户过期时间                      :3月 11, 2021
两次改变密码之间相距的最小天数     :0
两次改变密码之间相距的最大天数     :99999
在密码过期之前警告的天数    :7
示例4:变更用户id、所属主组与扩展附加组

原来用户信息

[root@localhost ~]# id test1
uid=1001(test1) gid=1001(test1) 组=1001(test1)

将用户id改为1002,主组改为1000,附加组为1001,1002

[root@localhost ~]# usermod -u 1002 -g 1000 -G 1001,1002 test1
[root@localhost ~]# id test1
uid=1002(test1) gid=1000(tiger) 组=1000(tiger),1001(test1),1002(test2)
示例5:锁定用户禁止其登录系统
[root@localhost ~]# usermod -L test1

锁定之后再登录出现下面情况:

image

示例6:解锁用户,允许其登录系统
[root@localhost ~]# usermod -U test1
③ 设置密码:passwd

语法格式:passwd [选项] 用户名

常用选项:

  • –stdin:允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
  • -d:使该用户可用空密码登录系统
  • -e:强制用户在下次登录时修改密码
  • -S:显示用户的密码是否被锁定,以及密码所采用的加密算法名称
示例1:将用户test1密码修改为123456
[root@localhost ~]# passwd test1
更改用户 test1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
示例2:使用标准输入修改用户密码
[root@localhost ~]# echo "tiger"|passwd --stdin test1
更改用户 test1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
示例3:强制用户在下次登录时修改密码
[root@localhost ~]# passwd -e test1
正在终止用户 test1 的密码。
passwd: 操作成功

用户登录时会出现下面提示:

[tiger@localhost root]$ su test1
密码:
您需要立即更改密码(root 强制)
为 test1 更改 STRESS 密码。
(当前)UNIX 密码:
示例4:显示test1用户密码锁定信息及加密算法
[root@localhost ~]# passwd -S test1
test1 PS 1970-01-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
③ 删除用户:userdel

语法格式:passwd [选项] 用户名

常用选项:

  • -r:强制删除用户
  • -f:同时删除用户及用户家目录
示例:删除用户test1,以及家目录
[root@localhost ~]# userdel -rf test1
userdel:组“test1”没有移除,因为它不是用户 test1 的主组

注意:删除用户时,如果主组只有一个用户,会同时将用户的主组删除 。因为test1在上面示列中将主组改为了1000。所以在删除用户时未将test1组删除。

2、用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

查看/etc/group文件

[root@localhost ~]# tail -n 3 /etc/group
tiger:x:1000:tiger
test1:x:1001:
test2:x:1002:

文件结构说明:

用户组名:密码:用户ID:组内用户名
  • 密码:x表示占位符,用户组可设置密码,但是绝大部分情况下是不设置密码的。
  • 组内用户名: 表示附加组是当前组的的所有用户名
① 添加用户组:groupadd

语法格式:groupadd [选项] 用户组名

常用选项:

  • -g:指定组id
示例1:创建用户组,指定id
[root@localhost ~]# groupadd -g 1004 newg

查看/etc/group文件最后一行。

[root@localhost ~]# tail -n 1 /etc/group
newg:x:1004:

注意:

  • 创建用户组时,不指定id,给定默认的id(范围从:1000以后,最后一个id加1)。
  • 指定组id时,不允许出现重复的组id。
② 修改用户组:groupmod

语法格式:groupmod [选项] 用户组名

常用选项:

  • -g:修改用户组id
  • -n:修改用户组名
综合示例:更新用户newg的组名称为运维ops,并更改组id1006
[root@localhost ~]# groupmod -g 1006 -n ops  newg
[root@localhost ~]# tail -n 1 /etc/group
ops:x:1006:

注意:

  • 指定组id时,不允许出现重复的组id。
③ 删除用户组:groupdel

语法格式:groupdel 用户组名

示例:删除上面示例中新建的组
[root@localhost ~]# groupdel ops
[root@localhost ~]# groupdel test1
[root@localhost ~]# groupdel tiger
groupdel:不能移除用户“tiger”的主组

上面示例中,删除其它组是都正常删除,在删除tiger组时删除未成功,提示不能删除用户tiger的主组。

注意:

  • 要删除用户组时,这个组如果是某个用户的主组,则不允许删除,确定需要删除时,可将用户移出该组(即改变用户主组为非当前组),然后再删除组。

三、网络设置

1、网卡配置

网卡的配置文件位置在/etc/sysconfig/network-scripts/目录下。

[root@localhost ~]# ls /etc/sysconfig/network-scripts/
ifcfg-ens33  ifdown-ib    ifdown-ppp       ifdown-tunnel  ifup-ib    ifup-plusb   ifup-Team         network-functions
ifcfg-lo     ifdown-ippp  ifdown-routes    ifup           ifup-ippp  ifup-post    ifup-TeamPort     network-functions-ipv6
ifdown       ifdown-ipv6  ifdown-sit       ifup-aliases   ifup-ipv6  ifup-ppp     ifup-tunnel
ifdown-bnep  ifdown-isdn  ifdown-Team      ifup-bnep      ifup-isdn  ifup-routes  ifup-wireless
ifdown-eth   ifdown-post  ifdown-TeamPort  ifup-eth       ifup-plip  ifup-sit     init.ipv6-global

网卡配置文件命名格式:ifcfg-网卡名称

查看网卡配置:

[root@localhost ~]# cat  /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"  //网络类型:Ethernet以太网类型
PROXY_METHOD="none" //代理方式:关闭状态
BROWSER_ONLY="no" //仅使用浏览器:否
BOOTPROTO="dhcp" //引导协议: dhcp(动态协议)、static(静态协议)、none(不指定)
DEFROUTE="yes" // 默认路由:启用
IPV4_FAILURE_FATAL="no" //不启用工PV4错误检查功能
IPV6INIT="yes" //启用工PV6协议
IPV6_AUTOCONF="yes" //自动配置工PV6地址
IPV6_DEFROUTE="yes" //启用IPV6默认路由
IPV6_FAILURE_FATAL="no" //不启用工PV6错误检查功能
IPV6_ADDR_GEN_MODE="stable-privacy" //IPV6地址生成模型
NAME="ens33" //网卡逻辑设备名称
UUID="0720bf0a-e3f3-406d-9ebd-f7c44b53c888" //通用唯一识别码
DEVICE="ens33" //网卡物理设备名称,必须和NAME值一样
ONBOOT="yes" 开机启动网络配置

如果将BOOTPROTO设置为dhcp,则每次启动系统会动态分配ip地址,这将造成每次的ip地址可能不同,可将参数设为staticnone,这样就可以指定ip,保证每次系统启动后ip地址不变。

2、配置静态IP地址

/etc/sysconfig/network-scripts/ifcfg-ens33文件中增加以下配置:

BOOTPROTO="static"
###静态地址配置
IPADDR="192.168.163.136"
NETMASK="255.255.255.0" #子网掩码 此项可不设置
GATEWAY="192.168.163.2" # 网关 此项必需设置,否则无法连接网络
DNS1="223.5.5.5" #dns服务 阿里 
DNS2="223.6.6.6" #dns服务 阿里备用 

配置后不会立即生效,需重新启动网络服务。

3、重启网卡服务的方法

① 使用service命令,网络服务的名称为network

[root@localhost ~]# service network restart
Restarting network (via systemctl): [  确定  ]

② 使用前面刚学的systemctl命令

[root@localhost ~]# systemctl restart network

③ 使用/etc/init.d/目录下的network服务进行启动

查看/etc/init.d/目录

[root@localhost ~]# ls -l /etc/init.d/
总用量 40
-rw-r--r--. 1 root root 18281 5月  22 2020 functions
-rwxr-xr-x. 1 root root  4569 5月  22 2020 netconsole
-rwxr-xr-x. 1 root root  7928 5月  22 2020 network
-rw-r--r--. 1 root root  1160 10月  2 01:08 README

使用路径启动

[root@localhost ~]# /etc/init.d/network restart
Restarting network (via systemctl):                        [  确定  ]

四、SSH服务

1、SSH简介

SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。

在此之前,一般使用FTPTelnet来进行远程登录。但是因为它们以明文的形式在网络中传输账户密码和数据信息,因此很不安全,很容易受到黑客发起的中间人攻击,这轻则篡改传输的数据信息,重则直接抓取服务器的账户密码。

想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。

sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:

  • 基于口令的验证—用账户和密码来验证登录;
  • 基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。

2、sshd服务配置

查看sshd配置文件

“Linux系统中的一切都是文件”,因此在Linux系统中修改服务程序的运行参数,实际上就是在修改程序配置文件的过程。

sshd服务的配置信息保存在/etc/ssh/sshd_config文件中。

[root@localhost ~]# cat /etc/ssh/sshd_config
………………省略部分输出………………
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
………………省略部分输出………………

sshd服务的配置很多,常用的参数配置有以下几个:

sshd服务配置文件中包含的常参数以及作用
参数作用
Port 22默认的sshd服务端口
ListenAddress 0.0.0.0设定sshd服务器监听的IP地址
HostKey /tc/ssh/ssh_host_keySSH协议版本为1时,DES私钥存放的位置
HostKey /etc/ssh/ssh_host_rsa_keySSH协议版本为2时,RSA私钥存放的位置
HostKey /etc/ssh/ssh_host_dsa_keySSH协议版本为2时,DSA私钥存放的位置
PermitRootLogin yes 设定是否允许root管理员直接登录
StrictModes yes当远程用户的私钥改变时直接拒绝连接
MaxAuthTries 6最大密码尝试次数
MaxSessions 10 最大终端数
PasswordAuthentication yes是否允许密码验证
PermitEmptyPasswords no是否允许空密码登录(很不安全)

注意:sshd服务的默认端口号为22,可以进行修改,需注意两个事项:

  • 端号号范围从0-65535
  • 不能使用已被占用的端口号

3、启动停止sshd服务

查看状态

命令:service sshd status

[root@localhost ~]# service sshd status
Redirecting to /bin/systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 六 2021-02-20 08:51:59 CST; 1h 20min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1247 (sshd)
    Tasks: 1
………………省略部分输出………………
启动

命令:service sshd start

[root@localhost ~]# service sshd start
Redirecting to /bin/systemctl start sshd.service
重新启动

命令:service sshd restart

[root@localhost ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
停止

命令:service sshd stop

[root@localhost ~]# service sshd stop
Redirecting to /bin/systemctl stop sshd.service
[root@localhost ~]# service sshd status
Redirecting to /bin/systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 六 2021-02-20 10:15:26 CST; 22s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 6206 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS)
………………省略部分输出………………

4、远程终端

终端工具主要帮助运维人员连接远程的服务器,常见终端工具有XshellsecureCRTPutty

这里使用Xshell

4.1、安装Xshell软件

① 启动安装程序

image

② 安装完成解决升级新版本提示问题

直接使用nslicense.dll文件替换xshell中的文件,可绕过更新。

image

③ 启动程序进入主界面

image

4.2、使用终端连接服务
4.2.1、图形界面创建会话连接

① 新建会话

image

② 在弹出窗口点击连接

image

③ 点击接受保存

image

④ 输入用户名点击确定

image

⑤ 输入密码点击确定

image

⑥ 登录到服务器

image

4.2.2、使用SSH命令进行连接

① 登录

命令:ssh 用户名:密码@主机IP地址

[c:\~]$ ssh root:root@192.168.163.137


Connecting to 192.168.163.137:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Sat Feb 20 10:17:38 2021
[root@localhost ~]# 

② 退出

命令:exit

[root@localhost ~]# exit
登出
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(192.168.163.137:22) at 10:21:46.

Type `help' to learn how to use Xshell prompt.
[c:\~]$ 
4.2.3、安全密钥验证

加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本可以直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分。在传输数据时,如果担心被他人监听或截获,就可以在传输前先使用公钥对数据加密处理,然后再行传送。这样,只有掌握私钥的用户才能解密这段数据,除此之外的其他人即便截获了数据,一般也很难将其破译为明文信息。

在生产环境中使用密码进行口令验证终归存在着被暴力破解或嗅探截获的风险。如果正确配置了密钥验证方式,那么sshd服务程序将更加安全。

配置客户端公/私钥

① 在客户端主机中生成密钥对

image

② 设置密钥类型和长度,点击下一步

image

③ 生成公钥私钥对

image

④ 输入秘钥的密码,这个密码是xshell内部保密使用的,与秘钥本身无关

image

image

⑤ 生成密钥,并保存在了xShell中,点击完成

image

选择保存为文件,保存公钥,然后单击完成。

⑥ 如果需要导出私钥,可以单击导出,不需要可跳过此步

image

配置服务端

① 上传生成的公钥到服务器,加入公钥

cat id_rsa_2048.pub >> ./.ssh/authorized_keys 

② 对服务器进行设置,使其只允许密钥验证,拒绝传统的口令验证方式。记得在修改配置文件后保存并重启sshd服务程序。

修改/etc/ssh/sshd_config文件,并重新启动sshd服务。

image

使用xshell进行登录

image

登录成功

image

注:

也可在服务器主机生成公钥私钥,然后将私钥导入xshell,将公钥加入到服务器端。

  • 生成密钥命令:ssh-keygen
  • 发送公钥到服务端:ssh-copy-id 服务端ip
  • 也可直接将公钥内容追加到~/.ssh/authorized_keys文件中

5、SSH服务文件传输

使用XFtp可视化工具进行文件传输

5.1、安装xFtp软件

① 启动安装程序

image

② 输入产品密钥

image

xftp:产品密钥:101210-450789-147200

③ 安装完成打开主界面

image

5.2、使用xftp终端传输文件
5.2.1、创建会话

使用XFTP创建会话

① 点击新建打开会话窗口

image

② 点击连接

image

③ 输入用户名

image

④ 输入密码

image

如果配置了公钥与私钥,并且关闭了允许密码验证,那么只能通过私钥证书进行登录,如果xhell已经设置,那么xftp会自动读取。

⑤ 连接成功界面,会在右边窗口显示用户家目录。

image

出现中文乱码解决方法:使用UTF-8编码的复选框勾上

image

注意:如果已经使用xshell已经登录,可在xshell窗口直接打开xftp程序,xftp会以xshell当前登录用户的账号信息,这样就无需进行重复登录。

image

5.2.2、上传文件

① 在右边窗体选择上传到那个目录,在左边窗体选择上传文件,右键打开菜单,选择传输菜单,单击上传

image

② 上传成功

image

5.2.3、下载文件

① 在左边窗体选择下载到那个目录,在右边窗体选择下载文件,右键打开菜单,选择传输菜单,单击开始下载

image

② 下载成功

image

5.3、使用命令行传输文件

传输工具:PSCP.exe(必须在cmd命令行打开)

下载地址

image

用法:

  • pscp 选项 用户名@linux主机地址:资源路径 windows本地的地址(下载到win)
  • pscp 选项 资源路径 用户名@linux主机地址:远程路径(上传到linux)
  • pscp 选项 -ls 用户名@linux主机地址(列出远程路径下结构)

常用参数:

  • -r:递归复制目录文件
  • -P:端口号
  • -i:用户认证的私钥文件,如果使用公钥私钥安全加密方式使用此参数
5.3.1、允许普通密码登录模式下上传下载

示例1:将用户家目录文件下载到本地d:\tmp

pscp -r -P 22 root@192.168.163.137:/root d:\tmp

image

示例2:将本地d:\作业.txt文件上传到家目录下

pscp  -P 22  d:\作业.txt root@192.168.163.137:/root

image

5.3.2、不允许普通密码登录模式下上传下载

注意:使用私钥进行登录时,需先将私钥使用puttygen.exe工具将私钥保存为.ppk格式文件,如果直接使用id_rsa文件则会报以下错误:

image

转换文件格式

① 下载puttygen.exe工具

下载地址

② 打开工具,选择导入私钥文件选项

image

③ 选择文件导入,保存私钥为.ppk类型文件

image

④ 保存后的文件

image

示例1:将用户家目录文件下载到本地d:\tmp

pscp -r -P 22 -i d:\pri.ppk root@192.168.163.137:/root d:\tmp

image

示例2:将本地d:\作业.txt文件上传到家目录下

pscp  -P 22 -i d:\pri.ppk d:\作业.txt root@192.168.163.137:/root

image

注:同是linux系统下可使用:scp命令进行传输,格式同win

image

刚学java菜鸡,永劫无间蚀月,王者荣耀王者,金铲铲小铂金,第五人格菜鸡,原神开服玩家,星穹铁道菜鸡,崩坏的菜鸡,闪耀暖暖,和平精英,LOL,CSGO,以及三A大作收集者等等。。。