首页 > 系统相关 >linux学习之登录密码(ssh/telnet)

linux学习之登录密码(ssh/telnet)

时间:2024-07-09 17:31:45浏览次数:13  
标签:bin sshd 密码 用户 telnet etc ssh linux root

在Linux系统中,用户登录密码是用于安全验证用户身份的一种方式。登录密码通常是加密后存储在系统的/etc/shadow文件中。

如果您想要获取Linux系统中用户的登录密码,这通常是不可能的,因为密码是经过加密处理的,而且出于安全考虑,没有直接的方式可以获取它们的明文形式。

/etc/passwd详解

/etc/passwd具有统一性和标准型,各版本的Linux操作系统的/etc/passwd功能和内容格式基本相同,/etc/passwd文件为按行记录的文本文件,每行记录一个用户的信息,所有用户均可读/etc/passwd,只有超级用户可以写/etc/passwd。

/etc/passwd保存了所有用户的用于读取的必要信息,包括①用户名②密码占位符③用户标识号④用户组标识号⑤用户信息描述⑥用户登录目录⑦用户登录Shell。

username:password-placeholder:uid:gid:user-info-desc:user-login-directory:user- login-shell

  1. 用户名(username):这是用户在系统中的标识,通常长度不超过8个字符,合法字符包括字母、数字、下划线和句点。
  2. 密码占位符(password-placeholder):该位置通常只存放一个"x",这表示密码在/etc/shadow文件中加密存储。

注:该信息位原先用于存放加密后的用户密码,但在现代Linux系统中,出于安全性考虑,真正的密码已转移到了/etc/shadow文件中。

  1. 用户标识号(UID):UID是用户在系统中的唯一标识号,和用户名一一对应。一般情况,超级用户是0,系统用户是1~499,普通用户是500~65535。。
  2. 用户组标识号(GID):该信息位记录用户所属的用户组,用户组的具体定义可以查看/etc/group文件。
  3. 个人信息描述:该信息位记录着用户的真实姓名、电话、地址和邮编等个人信息,各项之间用逗号分隔。它通常为空,但在某些系统中可能包含详细信息。
  4. 登录目录:该目录是用户登录系统后的默认目录,通常就是用户的主目录,一般在/home下。根用户登录系统后的默认的登录目录是/root。
  5. 登录Shell:用户以文本方式(非图形界面)登录系统后需要启动一个Shell进程。在Linux中支持多种Shell,而通常是bash。如果看到该文件中某一行以#开始,说明该用户账号被停用,即暂时不想让某个用户登录系统时可以在该用户信息所在行前加上#。

/etc/shadow详解

/etc/shadow 文件存储用户密码及其相关属性。如下。

username:password:lastchg:min:max:warm:inactive:expire:reserved

  1. username:用户名,是用户在系统中的标识,通常长度不超过8个字符,合法字符包括字母、数字、下划线和句点。
  2. password:加密密码,存放加密存储的密码。
  3. lastchg:上次密码更改日期,计算自 Unix 纪元(1970-01-01)。
  4. min:密码最短使用期限(天)。
  5. max:密码最长使用期限(天)。
  6. warn:密码到期前的警告天数。
  7. inactive:密码过期后账户失效前的天数。
  8. expire:账户失效日期。

更新密码有效期策略,有两种方式:1)使用 chage 命令;2)直接编辑 /etc/shadow 文件。

chage 命令提供了一个安全方式来更改用户密码的过期信息。

  1. 查看当前密码策略:sudo chage -l username
  2. 设置新的密码过期时间:sudo chage -M <天数> username
  3. 移除密码过期限制:sudo chage -M -1 username

直接编辑 /etc/shadow 文件可以修改密码策略,但需要对文件格式和安全风险有充分理解。

以 root 权限打开 /etc/shadow,找到并编辑相关用户的条目。修改 max 字段来设定新的密码过期时间,或设置为 -1 来移除过期限制。

注意事项

1)修改 /etc/shadow 需要 root 权限。

2)直接编辑 /etc/shadow 存在风险,应谨慎操作。

3)修改前建议备份 /etc/shadow 文件。

密码操作

  1. 创建一般用户以 root 权限执行:adduser   ***
  2. 删除用户:以 root 权限执行:deluser   ***
  3. 修改用户密码:以 root 权限执行:passwd  ***

*** 即用户名,修改后可以在/etc/passwd 和 /etc/shadow中查看到;

常见问题实例

问题1:创建用户后,ssh连接不上

现象1

WARNING: Your password has expired.

You must change your password now and login again!

passwd: must be suid to work properly

现象2

# cat /etc/passwd

root:x:0:0:root:/root:/bin/sh

daemon:x:1:1:daemon:/usr/sbin:/bin/false

bin:x:2:2:bin:/bin:/bin/false

sys:x:3:3:sys:/dev:/bin/false

sync:x:4:100:sync:/bin:/bin/sync

mail:x:8:8:mail:/var/spool/mail:/bin/false

www-data:x:33:33:www-data:/var/www:/bin/false

operator:x:37:37:Operator:/var:/bin/false

ftp:x:83:83:ftp:/home/ftp:/bin/false

nobody:x:99:99:nobody:/home:/bin/false

sshd:x:1001:1001:SSH drop priv user:/:/bin/false

tel:x:1002:1002:Linux User,,,:/home/xeltel:/bin/sh

ssh:x:1003:1003:Linux User,,,:/home/xelssh:/bin/sh

现象3

# cat /etc/shadow

root:R7KE28xB3Y4Nc:10957:0:99999:7:::

bin:*:10933:0:99999:7:::

daemon:*:10933:0:99999:7:::

sync:*:10933:0:99999:7:::

halt:*:10933:0:99999:7:::

uucp:*:10933:0:99999:7:::

operator:*:10933:0:99999:7:::

ftp:*:10933:0:99999:7:::

nobody:*:10933:0:99999:7:::

sshd:*:::::::

tel:d53LbSKA7ZkaA:0:0:99999:7:::

ssh:GVFl4IcTNQXuU:0:0:99999:7:::

原因分析

1、通过查看passwd,确认账户:ssh是存在的

2、查看shadow,确认密码有效期过期,需要进行修改

解决方案

将ssh:GVFl4IcTNQXuU:0:0:99999:7:::

改为ssh:GVFl4IcTNQXuU:15695:5:99999:7:5:20000:

问题2:一般用户,进不来特权模式

现象1

$ su root

su: must be suid to work properly

原因分析

1、一般用户无法执行su命令

解决方案

需要在root用户下,对su进行设置为一般用户可执行

chmod u+s /bin/su    //确保su命令具有适当的suid权限

问题3:无法使用root账户登录ssh

现象1

基于root账户登录ssh,一直报密码错误

现象2

创建一般用户,反而可以基于一般用户称号登录ssh

原因分析

1、大概率是文件系统默认禁止使用root用户通过ssh远程登录linux

2、查看/etc/ssh/sshd_config

      确认PermitRootLogin 是否打开?如果打开后面着是什么,如果没有打开,或者打开但后面的值为no / prohibit-password,就可以确认是系统禁止;

解决方案

1、确认当前是否需要基于root用户登录,如果没必要,则创建一般用户账户,基于一般用户账户进行登录使用;

2、如何确认需要需要基于root用户登录,则修改/etc/ssh/sshd_config中的PermitRootLogin打开,并将后面的状态改为yes

问题4:sshd执行报错

现象1

# sshd

sshd re-exec requires execution with an absolute path

#

原因分析

解决方案

使用绝对路径启动

# /usr/sbin/sshd

#

问题5:无法使用sshd进行连接主机

现象1

使用PS查看,确定是没有启用 sshd 服务导致的问题

现象2

# sshd

sshd re-exec requires execution with an absolute path

#

现象3

指定路径,执行/usr/sbin/sshd,也没有成功

# /usr/sbin/sshd

Missing privilege separation

directory: /var/empty

原因分析

没有/var/empty目录

解决方案

1、创建/var/empty文件夹:mkdir /var/empty/,重新执行/usr/sbin/sshd,执行成功,进行ssh连接正常;

2、在手动创建后,复位板子,创建的文件夹就消失了,需要重复创建,可以在自启动文件 /etc/init.d/S50sshd 中添加 mkdir /var/empty

问题6:root账户密码被无意修改

现象1

root账户密码被无意修改,无法正常进入到OS的界面

原因分析

密码不对,无法进行OS,进行使用;

解决方案

1、将启动OS的参数中init的信息改为/bin/bash;此举可以让OS启动后,mount文件系统后赞同,不执行相关初始流程,直接进入OS的bash界面(无需输用户名+密码);

2、在bash界面下输入以下命令:

    1)mount –o remount,rw /

    2)passwd root      //修改新密码

    3)touch  /.autorelable

    4)exec /sbin/init   //使用新的密码进入OS;

标签:bin,sshd,密码,用户,telnet,etc,ssh,linux,root
From: https://blog.csdn.net/YU__MU__/article/details/140297185

相关文章

  • SSH内网穿透(SSH端口转发)
    一、远程端口转发 当有一台local主机,想要访问另一台local主机C,A和C不在同一局域网,但无法访问且有一台公网服务器,A和C都可以向B发起SSH连接可做以下操作实现A->C,即A访问CC发起远程端口转发命令,实现将C和B两个端口之间的流量转发:ssh-RserverB_port:localhost:localC_port......
  • .net core部署linux下载文件 文件为中文下载
    在项目中,需要下载模板,某个文件夹下有excel文件或者word等 文件名为中文的时候在linux服务器下载不了  如果直接写路由的话在windows下是可以直接访问的,但是core部署在linux上所以会有些不同第一种:写一个接口使用流下载[httpget("download")]publicasyncTask<FileResult......
  • Linux 搭建SFTP环境
    SFTP(SSH文件传输协议)可以用来安全地传输文件。以下是在Linux服务器上设置SFTP服务的基本步骤: 1) 安装OpenSSH服务:sudoapt-getupdatesudoapt-getinstallopenssh-server2) 创建SFTP用户并设置密码:sudoaddusersftpusersudopasswdsftpuser3) 创建一个目录,用于SF......
  • Linux 性能基准测试工具及测试方法
    上线前,基准测试的重要性,这篇文章着重介绍一下「Linux性能基准测试工具及测试方法」还是老规矩,先请性能领域的大师布伦丹·格雷格(BrendanGregg)登场......
  • Linux 下 kafka 集群部署
    本文将以三台服务器为例,介绍在linux系统下kafka的部署方式。1.zookeeper下载下载地址:ApacheKafka选择需要的介质下载,这里以 kafka_2.11-1.1.1.tgz为例2.环境准备  部署kafka需要先部署JDK以及zookeeper ,JDK部署可以参考Linux下JDK安装-CSDN博客 zookeeper......
  • Pyodps2节点连接linux服务器(paramiko 检查文件是否存在)
    在maxcomputer加入paramiko相关资源包1#!/usr/bin/python2#-*-coding:UTF-8-*-34##@resource_reference{"six.zip"}5##@resource_reference{"PyNaCl-1.4.0.zip"}6##@resource_reference{"paramiko-2.7.2.zip"}7##@resource_r......
  • Linux常用命令-curl
    CURL是一个强大的命令行工具,用于在终端中与网络资源进行交互,支持多种协议和定制选项,非常适合开发者和系统管理员进行网络调试和数据传输操作。基本用法发送GET请求:curlhttp://example.com向http://example.com发送一个简单的GET请求,并输出响应内容到标准输出。保......
  • linux 常用和不那么常用命令记录02 磁盘占用
    常用的磁盘相关命令du有的时候我们想要查询一个文件所占用的磁盘空间大小,可以使用du命令来查看命令配置参数du[options][filesordirectories]-h:以人类可读的格式显示输出(例如KB、MB、GB)。-s:显示总计空间,而不显示每个子目录的具体大小。-c:显示所有文件......
  • 零基础学习linux
    ##1.回顾总结指令: > 切换: su xxx /su-xxx   >> 显示当前路径: pwd  >> 显示目录内容: ll /ls >> 清屏:clear >> 目录切换: cd  >> uname-a  ==> all >> 重启关机: reboot>> 返回上一级: cd ../......
  • linux 上安装FTP : vsftpd (含常见问题:读取目录列表失败,的处理)
    服务器上有时候需要安装ftp以便调试或给不懂使用服务器命令的同学更新文件 1、安装vsftpdyumupdateyuminstallvsftpd2、编辑配置文件确保以下配置的值和下面一致anonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YES这些配置......