• Linux:password 与passphrase


    系统版本:

    Red Hat Enterprise Linux AS release 4

    Linux用户密码策略

        Linux用户密码的有效期,是否可以修改密码可以通过login.defs文件控制.对login.defs文件修只影响后续建立的用户,如果要改变以前建立的用户的有效期等可以使用chage命令.

        Linux用户密码的复杂度可以通过pam pam_cracklib module或pam_passwdqc module控制,两者不能同时使用. 个人感觉pam_passwdqc更好用.

    /etc/login.defs密码策略

    PASS_MAX_DAYS   99999     #密码的最大有效期, 99999:永久有期

    PASS_MIN_DAYS   0          #是否可修改密码,0可修改,非0多少天后可修改

    PASS_MIN_LEN    5          #密码最小长度,使用pam_cracklib module,该参数不再有效

    PASS_WARN_AGE   7         #密码失效前多少天在用户登录时通知用户修改密码

    pam_cracklib主要参数说明:

        tretry=N:重试多少次后返回密码修改错误

        difok=N:新密码必需与旧密码不同的位数

        dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字.

        lcredit=N:小宝字母的个数

        ucredit=N大宝字母的个数

        credit=N:特殊字母的个数

        minclass=N:密码组成(大/小字母,数字,特殊字符)

    pam_passwdqc主要参数说明:

    mix:设置口令字最小长度,默认值是mix=disabled。

    max:设置口令字的最大长度,默认值是max=40。

    passphrase:设置口令短语中单词的最少个数,默认值是passphrase=3,如果为0则禁用口令短语。

    atch:设置密码串的常见程序,默认值是match=4。

    similar:设置当我们重设口令时,重新设置的新口令能否与旧口令相似,它可以是similar=permit允许相似或similar=deny不允许相似。

    random:设置随机生成口令字的默认长度。默认值是random=42。设为0则禁止该功能。

    enforce:设置约束范围,enforce=none表示只警告弱口令字,但不禁止它们使用;enforce=users将对系统上的全体非根用户实行这一限制;enforce=everyone将对包括根用户在内的全体用户实行这一限制。

    non-unix:它告诉这个模块不要使用传统的getpwnam函数调用获得用户信息,

    retry:设置用户输入口令字时允许重试的次数,默认值是retry=3


    参考地址

    为了便于说明,假设两端都是使用root用户
    1、ssh-keygen -t rsa
       采用默认路径,输入passphrase。
    2、scp /root/.ssh/id_rsa.pub remote:/root/.ssh/authorized_keys
       需要输入root在远程机器的帐号密码
    3、eval `ssh-agent`
    4、ssh-add
       输入之前输入的passphrase。


    说明
    1,2两步是用来生成rsa公钥/私钥对的。
    第一步产生了密钥对,id_rsa文件中是私钥,id_rsa.pub是公钥,也可以产生dsa方式的密钥对
    第二步将公钥附加到远程主机的/root/.ssh/authorized_keys文件后面。因为之前该文件是空的,所以直接scp;如果非空,则首先scp到临时文件,然后再cat。

    3,4两步用来预制Passphrase.
    第三步运行ssh-agent的输出(这是eval 反引号的功能),会设置两个环境变量SSH_AUTH_SOCK和SSH_AGENT_PID,这样程序可以访问后台的ssh-agent程序
    第四步设置passphrase。

    完成这四步,以后ssh或者scp就不会提示输入passphrase。
    如果只完成1,2两步,则会提示输入passphrase。
    如果都不作,则提示输入在远程机器的帐号密码。

    passphrase是用来对密钥对的私钥进行加密的,不会在网络上传播。

    缺点:3,4必需每次登录都执行。因为3设置环境变量,不同的登录是不同的。但对于shell,可以放在.bash_profile中执行,对于cron脚本,也可以在脚本中设置执行;4更是致命的,因为它是交互的,无法自定执行。

    解决:只好设置passphrase为空,这样3,4两步也就省掉了。

    附:

    ssh-agent 程序如同一个看门人,它根据需要安全地提供对安全密钥的访问。ssh-agent 启动后,它就会在后台运行,并且可以由 ssh 和 scp 程序等其他 OpenSSH 应用程序所使用。这就使得 ssh 程序可以请求一个已经解密了的密钥,而不是在每次需要时向您询问私钥的安全口令。

  • 相关阅读:
    initwithcoder和 initwithframe 区别?
    iOS图形处理和性能
    iOS图形处理和性能
    Objc的底层并发API
    Objc的底层并发API
    位运算
    位运算
    网页开发的6种在线调试环境
    网页开发的6种在线调试环境
    Python基本语法_函数属性 & 参数类型 & 偏函数的应用
  • 原文地址:https://www.cnblogs.com/dracula/p/2471055.html
Copyright © 2020-2023  润新知