Linux入门第一讲

时间:2025-03-12 14:21:00

计算机系统涉及了太多分支和商业纠葛, 这节课我们不纠结正统的问题, 只从涉及的概念上进行分类

Unix和linux

  • Unix

    最古老的现代计算机系统, 始于60年代. 从商业上来讲, 只有unix认证的系统才是unix系统.

    • linux

      linux和unix不是单纯的继承关系, linux只是继承了unix的设计理念. 但是底层实现不同, 所以不完全兼容.

      linux不同的发行版, 只是侧重点不同. 本质是包管理不同.

      • ubuntu
        • 使用apt包管理工具
        • 对图形界面支持更加友好
        • 社区活跃, 更新更加积极
        • 更加侧重个人用户
      • centos
        • 使用yum包管理工具
        • 对底层硬件的兼容性更好
        • 使用yum包管理工具
    • mac os

      mac os可以看作和unix是继承关系, 完全符合unix规范.

  • Windows

    始于80年代, 强大的图形界面操作逻辑. 对用户更加友好.

win10安装linux

/article/

为什么使用linux做服务器

  • linux使用费用低
  • linux兼容性更好
  • linux是开源的
  • linux社区活跃
  • 很多新技术都是优先适配linux, 之后再移植到windows和mac os.
  • linux管理员拥有实际意义上的最高权限, windows和mac os很多时候没有办法修改

远程连接linux服务器

  • SSH连接

    • 什么是SSH

      SSH是一种网络协议, 用于计算机之间的加密登录

      // 使用ssh登录
      ssh user@host
      
      ssh ubuntu@121.5.18.188
      
    • ssh管理工具

      • windows

        mobaXterm

      • Mac OS

        shellcraft

      • Linux

        推荐公钥登录

    • ssh原理

      利用了非对称加密, 客户端和服务端互相发送了对方的公钥. 在传输的过程中用公钥对数据进行加密, 得到加密后的数据再通过私钥进行解密.

    • ssh是绝对安全的吗?

      是也不是, 通过ssh建立的连接一定是安全的. 但是有一个前提, 那就是第一次连接的时候需要确认连接服务器是安全的, 这个风险是由用户自己承担.

  • 公钥登录

    实际上就是对发送的公钥进行持久化, 这样就不用每一次都互相交换公钥

    • 生成私钥和公钥

      ssh-keygen
      
      # 查看当前公钥和私钥
      root@DESKTOP-PUHRNUT:~/.ssh# cd /root/.ssh
      root@DESKTOP-PUHRNUT:~/.ssh# ls
      
    • 将公钥发送到服务端

      ssh-copy-id user@host
      
      # 第一次发送公钥需要输入验证码验证
      
    • 取消公钥登录

      实际上就是再服务端删除持久化的公钥

      cd /home/用户/.ssh
      # 删除对应客户端的公钥
      vim .ssh/authorized_keys
      

linux目录树

linux没有像windows盘符这样的概念, 对于windows来说, 当前的根目录就是盘符. 而linux是/

在linux中, 一切皆文件, 访问硬盘和访问文件夹对linux来说没有任何区别.

  • /

    • bin

      我们执行的命令其实都是运行的可执行文件. 系统的基础可执行文件都在该目录下.

    • sbin

      跟/bin一致, 但是只有管理员权限才能执行

    • boot

      引导程序所在目录, 引导程序就是用来开机的时候引导进入系统, 多个系统就会有多个引导程序.

    • dev

      设备文件目录, 将对设备文件的访问转变为对设备的访问.

    • etc

      系统和程序配置文件存放的目录.

    • home

      一台机器可以有多个用户, 该用户配置和文件都存在home目录下

      一般我们代码会存在/home/用户/自定义目录 下

    • lib

      存放系统共享库的目录

    • sys

      存放内核文件的目录

    • var

      存放增量数据的目录

      日志一般都在/var/log 目录下

    • usr(unix shared resources)

      • bin

      • sbin

      • lib

      • local

        用户级别的程序目录, 用户自己编译的程序会默认安装到当前目录### Unix和Linux

  • Unix

    Unix是现代计算机系统中最古老的系统之一,起源于1960年代。严格来说,只有通过Unix认证的操作系统才能被称为Unix系统。

    • Linux

      Linux并不是Unix的直接继承者,它继承了Unix的设计理念,但底层实现不同,因此不完全兼容。Linux的不同发行版在包管理方式上有所区别,但核心系统保持一致。

      • Ubuntu

        • 使用apt包管理工具
        • 对图形界面支持更加友好
        • 社区活跃,更新更频繁
        • 更加侧重个人用户的体验
      • CentOS

        • 使用yum包管理工具
        • 对底层硬件的兼容性较好
        • 主要面向企业级用户
    • Mac OS

      Mac OS可以被看作是Unix的直接继承者,完全符合Unix规范,且在其基础上进一步增强了图形界面和硬件支持。

Windows

  • Windows

    Windows始于1980年代,以其强大的图形界面和用户友好性著称。相比Unix和Linux,Windows的使用更为广泛,特别是在个人用户和企业用户中。


Win10安装Linux

可以通过Windows子系统(WSL)在Windows 10上运行Linux。详细安装步骤可参考百度经验


为什么使用Linux做服务器

  • 低成本:Linux开源免费,减少了使用费用。
  • 兼容性强:支持各种硬件和软件环境,兼容性更好。
  • 开源:用户可以根据需求修改内核和配置。
  • 活跃社区:全球有大量开发者和社区贡献者。
  • 技术支持:许多新技术首先在Linux上实现,随后再移植到其他操作系统。
  • 高权限控制:Linux管理员拥有真正的最高权限,可以进行深度配置,而Windows和Mac OS在很多情况下权限受到限制。

远程连接Linux服务器

  • SSH连接

    • SSH是什么?

      SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地登录计算机并执行命令。通过SSH,用户可以加密登录远程服务器。

      # 使用ssh命令连接到远程服务器
      ssh user@host
      ssh ubuntu@121.5.18.188
      
    • SSH管理工具

      • Windows:MobaXterm
      • Mac OS:Shellcraft
      • Linux:推荐使用公钥登录进行管理
    • SSH的工作原理

      SSH使用非对称加密。在连接过程中,客户端和服务端交换彼此的公钥,传输的数据使用公钥加密,接收方使用私钥解密。

    • SSH是否绝对安全?

      虽然SSH连接本身是安全的,但第一次连接时需要确认服务器的身份安全性,这个风险需要用户自行承担。

  • 公钥登录

    公钥登录是指在客户端和服务器之间的通信中持久化保存公钥,从而避免每次连接时都需要输入密码。

    • 生成公钥和私钥

      ssh-keygen
      # 查看生成的密钥文件
      cd ~/.ssh
      ls
      
    • 将公钥传送到服务器

      ssh-copy-id user@host
      # 第一次需要输入密码验证
      
    • 取消公钥登录

      在服务器上删除已存储的公钥即可取消公钥登录。

      cd /home/用户/.ssh
      vim authorized_keys  # 删除对应的公钥
      

Linux目录树

与Windows的盘符不同,Linux只有一个根目录/,在Linux中,一切皆文件。硬盘、设备、文件夹等都被视为文件。

  • 根目录/
    • bin:存放系统基本命令的可执行文件目录。
    • sbin:存放系统管理命令的可执行文件目录,仅管理员可执行。
    • boot:存放引导程序的目录,用于系统启动时引导操作系统。
    • dev:设备文件目录,通过访问设备文件来与设备进行交互。
    • etc:存放系统和程序配置文件。
    • home:用户主目录,每个用户都有独立的文件夹。
    • lib:存放系统共享库。
    • sys:存放内核相关文件。
    • var:存放增量数据,如日志文件。
    • usr:用户共享资源目录,包括用户级别的二进制文件和库。