丙午🐎年

acc8226 的博客

RSA、DSA、ECDSA、EdDSA 和 Ed25519 的区别

结论

ssh key 的类型有四种,分别是 dsa、rsa、ecdsa、ed25519。

根据数学特性,这四种类型又可以分为两大类,dsa/rsa 是一类,ecdsa/ed25519 是一类,后者算法更先进。

  1. dsa 因为安全问题,已不再使用了。
  2. ecdsa 因为政治原因和技术原因,也不推荐使用。
  3. rsa 是目前兼容性最好的,应用最广泛的 key 类型,在用 ssh-keygen 工具生成 key 的时候,默认使用的也是这种类型。不过在生成 key 时,如果指定的 key size 太小的话,也是有安全问题的,推荐 key size 是 3072 或更大。
  4. ed25519 是目前最安全、加解密速度最快的 key 类型,由于其数学特性,它的 key 的长度比 rsa 小很多,优先推荐使用。它目前唯一的问题就是兼容性,即在旧版本的 ssh 工具集中可能无法使用。不过据我目前测试,还没有发现此类问题。

什么是 OpenSSH

OpenSSH 是安全 Shell (SSH) 工具的开放源代码版本,Linux 及其他非 Windows 系统的管理员使用此类工具跨平台管理远程系统。 OpenSSH 在 2018 年秋季已添加至 Windows,并包含在 Windows 10 和 Windows Server 2019 中。

SSH 基于客户端-服务器体系结构,用户在其中工作的系统是客户端,所管理的远程系统是服务器。 OpenSSH 包含一系列组件和工具,用于提供一种安全且简单的远程系统管理方法,其中包括:

sshd.exe,它是远程所管理的系统上必须运行的 SSH 服务器组件
ssh.exe,它是在用户的本地系统上运行的 SSH 客户端组件
ssh-keygen.exe,为 SSH 生成、管理和转换身份验证密钥
ssh-agent.exe,存储用于公钥身份验证的私钥
ssh-add.exe,将私钥添加到服务器允许的列表中
ssh-keyscan.exe,帮助从许多主机收集公用 SSH 主机密钥
sftp.exe,这是提供安全文件传输协议的服务,通过 SSH 运行
scp.exe 是在 SSH 上运行的文件复制实用工具

阅读全文 »

这一节我们将介绍这几个命令 tr(注意不是 tar),col,join,paste。实际这一节是上一节关于能实现管道操作的命令的延续,所以我们依然将结合管道来熟悉这些命令的使用。

tr

tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。

使用方式

1
tr [option]...SET1 [SET2]

常用的选项

选项 说明
-d 删除和 set1 匹配的字符,注意不是全词匹配也不是按字符顺序匹配
-s 去除 set1 指定的在输入文本中连续并重复的字符
阅读全文 »

日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。它可以记录下系统产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。收集你想要的数据,分析出有价值的信息,可以提高系统、产品的安全性,还可以帮助开发完善代码,优化产品。日志会成为在事故发生后查明“发生了什么”的一个很好的“取证”信息来源。日志可以为审计进行审计跟踪。

常见的日志

日志是一个系统管理员,一个运维人员,甚至是开发人员不可或缺的东西,系统用久了偶尔也会出现一些错误,我们需要日志来给系统排错,在一些网络应用服务不能正常工作的时候,我们需要用日志来做问题定位,日志还是过往时间的记录本,我们可以通过它知道我们是否被不明用户登录过等等。

在 Linux 中大部分的发行版都内置使用 syslog 系统日志,那么通过前期的课程我们了解到常见的日志一般存放在 /var/log 中,我们来看看其中有哪些日志

根据图中所显示的日志,我们可以根据服务对象粗略的将日志分为两类

  • 系统日志
  • 应用日志

系统日志主要是存放系统内置程序或系统内核之类的日志信息如  alternatives.log 、btmp 等等,应用日志主要是我们装的第三方应用所产生的日志如 tomcat7 、apache2 等等。

接下来我们来看看常见的系统日志有哪些,他们都记录了怎样的信息

阅读全文 »

用户身份与能力

Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID(User IDentification)的数值为 0。

管理员 UID 为 0:系统的管理员用户。

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

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

需要注意的是,UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000 开始的(即使前面有闲置的号码)。

为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。假设一个公司中有多个部门,每个部门中又有很多员工,如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设置权限。例如,通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的数据库信息等。

另外,在 Linux 系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。

1. id 命令
id 命令用于显示用户的详细信息,语法格式为 “id 用户名”。
这个 id 命令是一个在创建用户前需要仔细学习的命令,它能够简单轻松地查看用户的基本信息,例如用户 ID、基本组与扩展组 GID。

1
2
~$ id linuxprobe
uid=1004(linuxprobe) gid=1005(linuxprobe) groups=1005(linuxprobe)
阅读全文 »

内建命令与外部命令之分

help , man , info 命令的使用以及区别

内建命令与外部命令
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在 bash 源码的 builtins 里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。

外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在 /bin,/usr/bin,/sbin,/usr/sbin 等等。比如:ls、vi 等。

1
2
3
4
5
6
# 得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的 .def 中
xxx is a shell builtin
# 得到这样的结果说明是外部命令,正如上文所说,外部命令在 /usr/bin or /usr/sbin 等等中
xxx is /usr/bin/xxx
# 若是得到 alias 的结果,说明该指令为命令别名所设定的名称;
xxx is an alias for xx --xxx

help 命令
因为 help 命令是用于显示 shell 内建命令的简要帮助信息。帮助信息中显示有该命令的简要说明以及一些参数的使用以及说明,一定记住 help 命令只能用于显示内建命令的帮助信息,不然就会得到你刚刚得到的结果。

那如果是外部命令怎么办,不能就这么抛弃它呀。其实外部命令基本上都有一个参数–help,这样就可以得到相应的帮助,看到你想要的东西了。试试下面这个命令是不是能看到你想要的东西了。

阅读全文 »
0%