返回介绍

2.1. Linux 简介与安装

发布于 2024-05-10 12:55:03 字数 22958 浏览 0 评论 0 收藏 0

2.1.1. 入门第一步,理解 Linux

  1. 首先,以 Linux 的思维方式系统性思考问题。
  2. Linux 是一个面向文件的操作系统。所有的应用、管理是基于文件的。
  3. Linux 是一个以命令行为主要的管理方式的 OS。
  4. Linux 的日志非常完善,也至关重要。
  5. Linux 是一个以配置文件为管理基础的 OS。
  6. Linux 的所有应用、管理和配置,都有很多程序来辅助完成。
2.1.1.1. 扩展阅读:Linux 内容划分

Linux 可划分为以下四部分

  • Linux 内核
  • GNU 工具
  • 图形化桌面环境
  • 应用软件

Linux 内核主要负责一下四种功能:

  1. 系统内存管理
    • 内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存。
    • 内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。内核不断地交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物理内存更多的可用内存。
    • 内存存储单元按组划分成很多块,这些块称作页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面被换到了磁盘上。
    • 内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称为换出,swapping out)——即使还有可用内存。
  2. 软件程序管理
    • Linux 操作系统将运行中的程序称为进程。内核控制着 Linux 系统如何管理运行在系统上的所有进程。
    • 内核创建了第一个进程(称为 init 进程)来启动系统上所有其他进程。Linux 操作系统的 init 系统采用了运行级。Linux 操作系统有 5 个启动运行级。
      • 运行级为 1 时,只启动基本的系统进程以及一个控制台终端进程,我们称之为单用户模式。单用户模式通常用来在系统有问题时进行紧急的文件系统维护。显然,这种模式下,仅有一个人(通常是系统管理员)能登录到系统上操作数据。
      • 运行级为 3 时,大多数应用软件,比如网络支持程序,都会启动。
      • 运行级为 5 时,系统会启动 X Window 系统,允许用户通过图形化桌面窗口登录系统。
      • Linux 系统可以通过调整启动运行级来控制整个系统的功能。
  3. 硬件设备管理
    • 内核的另一职责是管理硬件设备。任何 Linux 系统需要与之通信的设备,都需要在内核代码中加入驱动程序代码。在 Linux 内核中有两种方法用于插入设备驱动程序代码:
      • 编译进内核的设备驱动代码
      • 可插入内核的设备驱动模块
      以前,插入设备驱动代码的唯一途径是重新编译内核。随着 Linux 内核支持的硬件设备越来越多,这个过程变得越来越低效。
      后来,开发人员提出了内核模块的概念。它允许将驱动代码插入到运行中的内核而无需重新编译内核。Linux 系统将硬件设备当成特殊的文件,称为设备文件。
      
      • 设备文件有 3 种分类
        • 字符型设备文件:指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和终端都是作为字符型设备文件创建的。
        • 块设备文件:指处理数据时每次能处理大块大数据的设备,比如硬盘。
        • 网络设备文件:指采用数据包发送和接受数据的设备,包括各种网卡和一个特殊的回环设备。这个回环设备允许 Linux 系统使用常见的网络编程协议同自身通讯。
    • Linux 为系统上的每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供 Linux 内核标识它。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号下。次设备号用于标识主设备组下的某个特定设备。
  4. 文件系统管理
    Linux 内核支持通过不同类型的文件系统从硬盘中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。下表是 Linux 系统用来读写数据的标准文件系统
    Table 1: 文件系统类型
    文件系统描述
    extLinux 扩展文件系统,最早的 Linux 文件系统
    ext2第二扩展文件系统,在 ext 的基础上提供更多的功能
    ext3第三扩展文件系统,支持日志功能
    ext4第四扩展文件系统,支持高级日志功能
    hpfsOS/2 高性能文件系统
    jfsIBM 日志文件系统
    iso9660ISO 9660 文件系统(CD-ROM)
    mimixMINIX 文件系统
    msdos微软的 FAT16
    ncpNetware 文件系统
    nfs网络文件系统
    ntfs支持 Microsoft NT 文件系统
    proc访问系统信息
    ReiserFS高级 Linux 文件系统,能提供更好的性能和硬盘恢复功能
    smb支持网络访问的 Samba SMB 文件系统
    sysv较早期的 Unix 文件系统
    ufsBSD 文件系统
    umsdos建立在 msdos 上的类 Unix 文件系统
    vfatWindows95 文件系统(FAT32)
    XFS高性能 64 位日志文件系统

    Linux 内核采用虚拟文件系统(Virtual File System,VFS)作为和每个文件系统交互的接口。

GNU 工具

  1. 核心 GNU 工具:coreutils(coreutilities) 软件包 GNU coreutils 软件包由三部分构成:
    • 用以处理文件的工具
    • 用以操作文本的工具
    • 用以管理进程的工具
  2. shell
    Table 2: Linux 中常见的 shell
    shell描述
    bashbash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,bash 还有一个特点,可以通过 help 命令来查看帮助。包含的功能几乎可以涵盖 shell 所具有的功能,所以一般的 shell 脚本都会指定它为执行路径。
    ash一种运行在内存受限环境中简单的轻量级 shell,但与 bash shell 完全兼容。
    korn一种与 Bourne shell,但支持如关联数组和浮点运算等一些高级的编程特性。
    tcsh一种将 C 语言中的一些元素引入到 shell 脚本中的 shell。
    zsh一种结合了 bash、tcsh 和 korn 的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级 shell。

Linux 桌面环境

  1. X Window
  2. KDE 桌面(K Desktop Environment,K 桌面系统)
  3. GNOME 桌面(the GNU Network Object Model Environment,GNU 网络对象模型桌面)
  4. Unity 桌面
  5. 其他桌面
    Table 3: 其他桌面
    桌面描述
    Fluxbox 
    Xfce 
    JWM 
    Fvwm 
    fvwm95 

Linux 发行版 不同的 Linux 发行版通常归类为 3 种:

  1. 完整的核心 Linux 发行版
    Table 4: 完整的核心 Linux 发行版
    Slackware最早的 Linux 发行版之一
    Red Hat商业发行版
    FedoraRed Hat 分离出的家用发行版
    Gentoo为高级 Linux 用户设计的发行版,仅包含 Linux 源代码
    openSuse商用和家用的发行版
    DebianLinux 专家和商用 Linux 产品中流行的发行版
  2. 特定用途的发行版
    Table 5: 特定用途的发行版
    CentOS一款基于 Red Hat 企业版 Linux 源代码构建的免费发行版
    Ubuntu一款用于学校和家庭的免费发行版
    PCLinuxOS一款用于学校和办公的免费发行版
    Mint一款用于家庭娱乐的免费发行版
    dyne:bolic一款用于音频和 MIDI 应用的免费发型版
    Puppy Linux一款适用于老旧 PC 的小型免费发行版
  3. LiveCD 测试发行版。
    Table 6: LiveCD 测试发行版。
    Knoppix最早的 LiveCD Linux
    PCLinuxOS一款成熟的 LiveCD
    Ubuntu为多种语言设计的世界级 Linux 项目
    Slax基于 Slackware Linux
    Pubby Linux为老旧 PC 设计的一款全功能 Linux

2.1.2. Linux 安装

  1. 安装准备
    • 首先,准备一个 U 盘,用来刻录系统(刻录命令:dd,用法格式:sudo dd if=xxx.iso of=/dev/sdb),到 https://www.debian.org/ 下载 iso 镜像,注意有最小版和完整版。
    • Windows 下的刻录软件推荐使用 UltraISO(对于新手,建议在 Windows 下完成刻录)。
  2. 插入 U 盘,开机,开始选择安装。
  3. 详细安装步骤,可参考 Debian 快速安装指导
  4. 安装完成后,查看 Linux 版本
    // 查看 Linux 内核版本
    $ cat /proc/version
    $ uname -a
    
    查看 Linux 系统版本
    $ lsb_release -a //这个命令适用于所有的 Linux 发行版,包括 Redhat、SuSE、Debian…等发行版。
    $ cat /etc/redhat-release //这种方法只适合 Redhat 系的 Linux
    $ cat /etc/issue //使用所有 Linux 版本
    
2.1.2.1. 扩展阅读:主机规划与磁盘分区(Disk Partition)
待补充
2.1.2.2. 扩展阅读:磁盘格式
  1. 自动挂载
    配置文件 /etc/fstab 用来定义需要自动挂载的文件系统,fstab 中每一行代表一个挂在配置,格式如下:
    Table 7: 自动挂载
    /dev/sda3/mntext4defaults0 0
    需要挂载的设备挂载点文件系统挂在选项dump、fsck 相关选项
  2.  
2.1.2.3. 扩展阅读:文件系统
// 将 /dev/sda7 硬盘格式化为 ext3 格式。
$ mkfs -t ext3 -c /dev/sda7
2.1.2.4. 扩展阅读:磁盘配额(Disk Quota) 应用实践
2.1.2.5. 扩展阅读:软件磁盘阵列(Software RAID)
2.1.2.6. 扩展阅读:逻辑卷管理器(Logical Volume Manager)

2.1.3. Linux 安装后的常见配置

2.1.3.1. su & sudo
// 先给 sudoers 文件加上写权限
$ sudo chmod +w /etc/sudoers
// 编辑,然后配置如下,根据个人喜好自行设定
$ vim /etc/sudoers
# Default timeout
Defaults        env_reset
Defaults        timestamp_timeout=60
# ...
root    ALL=(ALL:ALL) ALL
zrg     ALL=(ALL:ALL) ALL
# Allow user nopasswd
zrg     ALL=(ALL:ALL)NOPASSWD: ALL
# Allow zrg_test user to execute reboot command
zrg_test ALL=/sbin/shutdown -r now
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Linux 系统当中的身份变换,可能有以下几个原因:

  • 使用一般账号:系统平日操作的好习惯
  • 用较低权限启动系统服务
  • 软件本身的限制

su 是最简单的身份切换命令

  • -:单纯使用 - 如『 su - 』代表使用 login-shell 的变量文件读取方式来登陆系统;若使用者名称没有加上去,则代表切换为 root 的身份。
  • -l:与 - 类似,但后面需要加欲切换的使用者账号!也是 login-shell 的方式。
  • -m:-m 与 -p 是一样的,表示『使用目前的环境配置,而不读取新使用者的配置文件』
  • -c:仅进行一次命令,所以 -c 后面可以加上命令喔!
2.1.3.2. 配置 Wifi
  1. 查看无线(wireless)网卡(LAN)驱动(driver)
    $ sudo lsmod | grep iw
    
  2. 安装(Installing)无线网卡驱动
    $ sudo apt-get install firmware-iwlwifi wireless-tools
    
  3. 向内核(kernel)中加载/移除模块(modules)
    $  modprobe iwl4965
    
  4. 重启系统
    $ reboot
    
  5. 配置无线网络
    //查看无线网口(nerwork port)
    $ sudo iwconfig
    //开启无线网口
    $ sudo ifconfig wlan0 up
    //扫描(scaning)无线网络
    $ sudo iwlist wlan0 scan
    //连接无线网络
    $ sudo iwconfig wlan0 ESSID "wifi-name" KEY "password" open
    //执行上面的命令(command)后,发现并不能成功!!!
    //于是,通过如下命令继续配置
    //格式:wpa_passphrase <ssid> [passphrase]
    $ sudo wpa_passphrase "wifi-name" "passowrd">/etc/wpa_supplicant.conf
    $ sudo wpa_passphrase -B -i wlan0 -Dwext -c /etc/wpa_supplicant.conf
    //查看 wlan0 无线网口
    $ sudo iwconfig wlan0
    //执行命令获取到 IP 地址,成功连上 WiFi
    $ sudo dhclient wlan0
    
  6. 开机自动连接 WiFi 配置
    $ sudo vim /etc/network/interfaces.d/wlan0
    
    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
     wpa-conf /etc/wpa_supplicant.conf 
    
2.1.3.3. 配置软件安装源(source)
2.1.3.4. 中文支持及中文输入法的配置
  1. 中文环境配置
    // 查看并设置环境变量
    $ echo $LANG
    $ export LANG=en_US.UTF-8
    // 没有安装 locales,先安装 locales
    $ sudo aptitude install locales
    
    // 配置中文编码
    $ sudo dpkg-reconfigure locales
    //选择编码(encode),space 选择
    en_US.UTF-8
    zh_CN.GB2312
    zh_CN.GB18030
    zh_CN.GBK
    zh_CN.UTF-8
    
    // 文件配置
    $ sudo vim /etc/default/locate
    
    # LANG="zh_CN.UTF-8"
    # LANGUAGE="zh_CN:zh"
    LANG="en_US.UTF-8"
    LANGUAGE="en_US:en"
    
  2. 安装中文输入法
    ibus 或 UIM 或 SCIM 或 Fcitx
    
  3. 问题处理:Debian/Ubuntu 安装 Fcitx 及 Fcitx 输入中文不显示候选词框的解决办法
    // 安装 fcitx 组件(module)
    $ sudo apt-get install fcitx-tools fcitx-config* fcitx-data fcitx-frontend* fcitx-libs fcitx-module* fcitx-ui* presage
    
    // 安装 fcitx 输入法
    $ sudo apt install fcitx-pinyin
    $ sudo apt install fcitx-googlepinyin
    $ sudo apt install fcitx-table //五笔
    
    // 设置并运行
    $ export LANG=zh_CN.utf8
    $ export LC_CTYPE=zh_CN.utf8
    $ export LC_ALL=zh_CN.utf8
    $ export XMODIFIERS=@im=fcitx
    $ fcitx &
    ui 动态库的支持:
    $ sudo apt install fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-ui-classic
    
    重启可用
    
2.1.3.5. 日期时间设置
  1. 设置时区
    $ tzselect
    
    $ vim .profile
    
    TZ=’Asia/Shanghai’;
    export TZ
    
    $ source .profile
    
  2. 设置时间
    经过时区设置,一般情况下,时间已经切换为想要的时间了。以下是设置时间的命令:
    // hwclock 用于查看硬件时间。设置硬件时间:
    $ sudo hwclock -set -date='07/17/2017 20:00'
    // 设置硬件时间与系统时钟同步。
    $ sudo hwclock --hctosys(hc 代表硬件时间,sys 代表系统时间)
    $ sudo hwclock -systohc
    
    扩展知识点:
    1. Linux 时钟分为系统时钟(System Clock)和硬件时钟(Real Time Clock,简称 RTC)。
    2. 系统时钟指当前 Linux Kernel 中的时钟。
    3. 硬件时钟指主板上由电池供电的时钟,可在 BIOS 中进行设置。	
    
2.1.3.6. Linux 上挂载 NTFS 格式文件系统
  • 方案 A:使用 linux-ntfs
    // 1. 获取安装
    $ wget     http://prdownloads.sourceforge.net/linux-ntfs/kernel-module-ntfs-2.6.18-92.el5-2.1.27-0.rr.10.11.x86_64.rpm    
    $ sudo rpm -ivh kernel-module-ntfs-2.6.18-92.el5-2.1.27-0.rr.10.11.x86_64.rpm
    
    // 2. 检查 ntfs 模块是否被加载进系统
    $ /sbin/modprobe ntfs
    [没有输出则代表存在;否则(otherwise)将会有错误信息(error message)报出(report)]
    $ cat /proc/filesystems
    [ntfs 应该出现在列表中]
    
    // 3. 查看 NTFS 系统的编号
    /sbin/fdisk -l |grep NTFS 
    
    // 4. 创建目录
    $ sudo mkdir -p /mnt/win_ntfs
    $ sudo mount -t ntfs /dev/sda1 /mnt/win_ntfs
    
  • 方案 B:使用 fuse 和 ntfs-3g
    // 1. 获取
    $ wget     http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.7.4/fuse-2.7.4.tar.gz?use_mirror=ncu    
    $ wget     http://www.ntfs-3g.org/ntfs-3g-2009.4.4.tgz    
    
    // 2. 编译安装
    $ tar -zxf fuse-2.7.4.tar.gz
    $ ./configure --prefix=/usr/local/fuse-2.7.4
    $ sudo make 
    $ sudo make install
    $ tar -zxf ntfs-3g-2009.4.4.tgz
    $ ./configure --prefix=/usr/local/ntfs-3
    $ sudo make 
    $ sudo make install 
    
    // 3. 检查 fuse 模块是否被加载进系统
    $ /sbin/modprobe fuse
    [没有输出则代表存在;否则将会有错误信息报出]
    $ cat /proc/filesystems
    [fuse 应该出现在列表中]
    
    // 4. 查看 NTFS 系统的编号 
    $ sudo fdisk -l |grep NTFS 
    
    // 5. 挂载
    $ mount ntfs-3g /dev/sda1 /mnt/win_ntfs
    
  • 方案 C:自动挂载 NTFS 格式硬盘
    // 1. 安装 ntfs-3g
    $ sudo apt-get install ntfs-3g
    
    // 2. 编辑 /etc/fstab
    // 先查看磁盘 UUID
    $ sudo /sbin/blkid /dev/sda1
    $ sudo vim /etc/fstab
    
    /dev/sdb1 /mnt/ntfs/ ntfs nls-utf8,umask-0222,uid-1000,gid-1000,ro 0 0    
    # Notice:
    # If /dev/sdb1 path will change due to system configuration, I recommend that you use the UUID (Universally Unique Identifier) of the partition. To find the UUID of /dev/sdb1, enter:
    # 翻译:/dev/sdb1 路径会随着系统配置而改变,建议使用 UUID (通用唯一标识符)
    # Note down the UUID value and update /etc/fstab as follows:
    # 翻译:记录下 UUID,更新 /etc/fstab 文件。
    # syntax
    # UUID="YOUR-UID-HERE" /mnt/ntfs/ ntfs nls-utf8,umask-0222,uid-1000,gid-1000,ro 0 0
    UUID="c2dbc0c5-a8fc-439e-aa93-51b0a61372e8" /mnt/ntfs/ ntfs nls-utf8,umask-0222,uid-1000,gid-1000,ro 0 0
    # Owning entire file system
    UUID="c2dbc0c5-a8fc-439e-aa93-51b0a61372e8" /mnt/ntfs/ ntfs uid-1000,gid-1000 0 0
    
    // 3. 创建目录
    $ sudo mkdir -p /mnt/ntfs
    
    // 4. 测试(Test)可用性
    $ sudo mount -a
    $ df -h
    $ cd /mnt/ntfs
    $ ls -l
    
    // 5. 卸载 NTFS 分区
    $ sudo umount /mnt/ntfs
    // or
    $ sudo umount /dev/sda1
    
    // 6. 注意错误信息:“Read-only file system”提示
    $ sudo  mv 05Music/ /mnt/sda/sda2/
    /bin/mv: inter-device move failed: '05Music/' to '/mnt/sda/sda2/05Music'; unable to remove target: Read-only file system
    解决办法:参照第 2 步
    
  • 参考资料 How To Debian/Ubuntu Linux Auto Mount Windows NTFS File System NTFS-3G fstab (简体中文) NTFS-3G (简体中文)
2.1.3.7. boot 加载选项修改
// 注释不需要的加载项!
$ sudo chmod +w /boot/grub/grub.cfg
$ sudo vim /boot/grub/grub.cfg
2.1.3.8. 使用 ssh 远程连接常见配置
2.1.3.8.1. 配置 SSH 持久连接 Server
  • Server 端
    $ sudo vim /etc/ssh/sshd_config
    
    #server 每隔 60 秒发送一次请求给 client,然后 client 响应,从而保持连接
    ClientAliveInterval 60  
    #server 发出请求后,客户端没有响应得次数达到 3,就自动断开连接,正常情况下,client 不会不响应。
    ClientAliveCountMax 3
    
  • Client 端
    $ sudo vim /etc/ssh/ssh_config
    
    #server 每隔 60 秒发送一次请求给 client,然后 client 响应,从而保持连接
    ServerAliveInterval 60  
    #server 发出请求后,客户端没有响应得次数达到 3,就自动断开连接,正常情况下,client 不会不响应。
    ServerAliveCountMax 3
    
2.1.3.8.2. 如何使用 OpenSSL 生成密钥对?
// 生成私钥
$ openssl genrsa -out rsa_private_key.pem 1024
参数:genrsa 生成密钥   -out 输出到文件  rsa_private_key.pem 文件名  1024 长度
// 从私钥中提取公钥
$ openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
参数: rsa 提取公钥  -in 从文件中读入  rsa_private_key.pem 文件名   -pubout  输出   -out 到文件  rsa_public_key.pem  文件名
2.1.3.8.3. 修改 SSH 默认端口号
// 首先,修改配置文件:
$ vim /etc/ssh/sshd_config
Port 22 Port 6666   

注意事项

  • 这里添加 6666 端口,测试成功连接后,再去除 22 端口配置。这样可以避免修改不成功无法正常登录。
  • 所修改的端口需要事先查明未被其他服务占用,以免造成不可估计的后果!
2.1.3.8.4. 通过密钥登录服务器
  1. 第一步,生成密钥对
    $ ssh-keygen
    
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/zrg/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/zrg/.ssh/id_rsa.
    Your public key has been saved in /home/zrg/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:OEEJVicOORWU5awcPz7oYPtldQwQXdwuPFyUcVY0umU zrg@DESKTOP-5IIDIKQ
    The key's randomart image is:
    +---[RSA 2048]----+
    |    +*B==o o.oo=*|
    |   .o+o= .. . =o.|
    |     .+ o .o + E |
    |     . *   o= =  |
    |      = S . o+   |
    |       + o .     |
    |    o . =        |
    |   . + o .       |
    |    ..o          |
    +----[SHA256]-----+
    
    // 如果客户端要访问多台服务器时,可进行如下操作:
    // 第一种方式:手动指定
    $ ssh user@host -i ~/.ssh/id_rsa
    
    // 第二种方式:配置客户端,/etc/ssh/ssh_config
    
    IdentityFile ~/.ssh/id_rsa
    IdentityFile ~/.ssh/github_id_rsa
    
    // 第三种方式:使用 SSH Agent
    
    # Default github user
    Host login-zrg
    HostName github.com
    User zrg
    IdentityFile ~/.ssh/id_rsa
    
    # jsf user
    Host login-jsf
    HostName github.com
    User jsf
    IdentityFile ~/.ssh/id_rsa_jsf
    
  2. 第二步,在服务器上配置上公钥
    // 将生成的公钥存入服务器的 ~/.ssh/authorized_keys 文件中,多个换行。
    $ cat ~/.ssh/id_rsa.pub >> authorized_keys
    $ chmod 600 ~/.ssh/authorized_keys
    $ chmod 700 ~/.ssh
    
  3. 第三步,配置 ssh,打开密钥登录功能
    $ vim /etc/ssh/sshd_config
    
    # 允许用户使用密钥登录
    RSAAuthentication yes
    PubkeyAuthentication yes
    # 允许 root 用户通过 SSH 登录
    PermitRootLogin yes
    # 当完成全部设置,以密钥方式登录成功后,可以禁用密码登录
    PasswordAuthentication no
    
  4. 第四步,重启 ssh 服务
    // 配置完成后,重启 sshd 服务
    $ systemctl restart sshd.service     
    
2.1.3.8.5. 扩展阅读:SSH & OpenSSH & SSL & OpenSSL 的关系
  • SSL(Secure Sockets Layer),是网络通信提供安全及数据完整性的一种安全协议,它涉及所有 TC/IP 应用程序。SSL 协议使用通讯双方的客户证书以及 CA 根证书,允许客户/服务器应用以一种不能被偷听的方式通讯,在通讯双方间建立起了一条安全的、可信任的通讯通道。它具备以下基本特征:信息保密性、信息完整性、相互鉴定。 主要用于提高应用程序之间数据的安全系数。
  • OpenSSL,对 SSL 的实现。
  • SSH(Secure Shell),意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议。使用 SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止 DNS 欺骗和 IP 欺骗。
  • OpenSSH,对 SSH 的实现。依赖于 OpenSSL,没有 OpenSSL 的话 OpenSSH 就编译不过去,也运行不了。
    • HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议),是一种透过计算器网上进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
2.1.3.8.6. 扩展阅读:其他远程连接工具
VNC、XDMCP 和 RDP
2.1.3.9. 使用 scp 命令上传下载文件
scp 命令
scp 命令用于在 Linux 下进行远程拷贝文件的命令,和它类似的命令有 cp,不过 cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system 时,用 scp 可以帮你把文件移出来。另外,scp 还非常不占资源,不会提高多少系统负荷,在这一点上,rsync 就远远不及它了。虽然 rsync 比 scp 会快一点,但当小文件众多的情况下,rsync 会导致硬盘 I/O 非常高,而 scp 基本不影响系统正常使用。
(no term)

语法

scp(选项)(参数)
选项:
-1:使用 ssh 协议版本 1;
-2:使用 ssh 协议版本 2;
-4:使用 ipv4;
-6:使用 ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定 ssh 配置文件;
-l:指定宽带限制;
-o:指定使用的 ssh 选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。

参数:
- 源文件:指定要复制的源文件。
- 目标文件:目标文件。格式为 user@host:filename(文件名为目标文件的名称)。
(no term)

从服务器上下载文件

$ scp username@servername:/path/filename /var/www/
// 示例:从 192.168.0.101 上的 /var/www/test.txt 的文件下载到 /var/www/ 目录中
$ scp root@192.168.0.101:/var/www/test.txt
(no term)

从服务器下载整个目录

$ scp -r username@servername:/var/www/remote_dir/ /var/www/local_dir
例如:scp -r root@192.168.0.101:/var/www/test  /var/www/test
(no term)

上传本地文件到服务器

$ scp /path/filename username@servername:/path   
例如把本机 /var/www/ 目录下的 test.php 文件上传到 192.168.0.101 这台服务器上的 /var/www/ 目录中
$ scp /var/www/test.php  root@192.168.0.101:/var/www/
(no term)

上传目录到服务器

$ scp  -r local_dir username@servername:remote_dir
例如:scp -r test  root@192.168.0.101:/var/www/ 把当前目录下的 test 目录上传到服务器的 /var/www/ 目录
2.1.3.10. 改变 Home 目录下的目录中文名称为英文

方法 1

$ vim ~/.config/user-dirs.dirs
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Download"
XDG_TEMPLATES_DIR="$HOME/Template"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Document"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Picture"
XDG_VIDEOS_DIR="$HOME/Video"

方法 2

$ export LANG=en_US
xdg-user-dirs-gtk-update

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文