Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在CLI上管理密码

如何在CLI上管理密码

作者头像
若与
发布于 2018-04-25 06:00:22
发布于 2018-04-25 06:00:22
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

基于密码的认证在网络盛行的今天,你可能需要或者已经使用了某种密码管理工具来跟踪管理你正在使用的所有密码。有各种各样的在线或离线服务或者软件工具用于完成此类事情,而这些工具因复杂程度、用户界面或者目标环境(如企业或终端用户)的不同而各不相同。例如,有一些是为终端用户开发基于图形化的密码管理器,如KeePass(X)。我自已一直使用1password,浏览器使用lastpasswd.

对于那些不想要依赖图形化进行密码管理的用户,最近一直习惯所有的操作在终端实现,所以学习了CLI下管理密码。下文将会讲述如何在命令行下使用 pass来管理密码,这是一个简单的用于命令行管理密码的工具

该密码工具实际上是一个shell脚本编写的前端,其中调用了几个其它工具(如gpg,pwgen,git,xsel)来使用OpenGPG管理用户的密码信息。各个密码使用gpg工具进行加密,并存储到本地密码仓库中。密码信息可以通过终端或者自清除的剪贴板工具使用。

该密码工具相当灵活,并且使用起来及其简单。你可以将每个密码信息存储到一个OpenGPG保护的普通文本文件,并且将不同的密码文件分组多个类目中。它支持bash自动补全特性,因此可以很方便地使用TAB键来补全命令或者很长的密码名称。

在Linux上安装pass

DebianUbuntu或者Linux Mint上安装pass:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get install pass
$ echo "source /etc/bash_completion.d/password-store" >> ~/.bashrc

Fedora上安装pass:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo yum install pass
$ echo "source /etc/bash_completion.d/password-store" >> ~/.bashrc

CentOS上安装pass,首先启用EPEL仓库,然后执行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo yum install pass
$ echo "source /etc/bash_completion.d/password-store" >> ~/.bashrc

在Archlinux上安装pass:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo pac -S pass
$ echo "source /etc/bash_completion.d/password-store" >> ~/.bashrc

在Mac上安装pass

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ brew install pass
$ echo "source /usr/local/etc/bash_completion.d/password-store" >> ~/.bashrc

注意:上面的这样做主要是为了在开启终端的时候,加载pass,可能不同方式下的,脚本文件不同,使用不同shell,也要注意。 比如: mac

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 youdi@MacbookPro > ~  brew list pass
/usr/local/Cellar/pass/1.7.1/bin/pass
/usr/local/Cellar/pass/1.7.1/etc/bash_completion.d/pass
/usr/local/Cellar/pass/1.7.1/lib/password-store/platform.sh # 需要加载的脚本
/usr/local/Cellar/pass/1.7.1/share/emacs/site-lisp/pass/password-store.el
/usr/local/Cellar/pass/1.7.1/share/fish/vendor_completions.d/pass.fish
/usr/local/Cellar/pass/1.7.1/share/man/man1/pass.1
/usr/local/Cellar/pass/1.7.1/share/pass/ (21 files)
/usr/local/Cellar/pass/1.7.1/share/zsh/site-functions/_pass

ubuntu

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ubuntu@youdi > ~  dpkg -L pass                                                                                                                                                                                     
/.                                                                                                                                                                                                                   
/usr                                                                                                                                                                                                                 
/usr/share                                                                                                                                                                                                           
/usr/share/doc                                                                                                                                                                                                       
/usr/share/doc/pass                                                                                                                                                                                                  
/usr/share/doc/pass/examples                                                                                                                                                                                         
/usr/share/doc/pass/examples/vim                                                                                                                                                                                     
/usr/share/doc/pass/examples/vim/noplaintext.vim                                                                                                                                                                     
/usr/share/doc/pass/examples/emacs                                                                                                                                                                                   
/usr/share/doc/pass/examples/emacs/password-store.el                                                                                                                                                                 
/usr/share/doc/pass/examples/emacs/README.md                                                                                                                                                                         
/usr/share/doc/pass/examples/emacs/Cask                                                                                                                                                                              
/usr/share/doc/pass/examples/dmenu                                                                                                                                                                                   
/usr/share/doc/pass/examples/dmenu/README.md                                                                                                                                                                         
/usr/share/doc/pass/examples/dmenu/passmenu                                                                                                                                                                          
/usr/share/doc/pass/copyright                                                                                                                                                                                        
/usr/share/doc/pass/changelog.Debian.gz                                                                                                                                                                              
/usr/share/doc/pass/related-projects.txt                                                                                                                                                                             
/usr/share/man                                                                                                                                                                                                       
/usr/share/man/man1                                                                                                                                                                                                  
/usr/share/man/man1/pass.1.gz                                                                                                                                                                                        
/usr/share/fish                                                                                                                                                                                                      
/usr/share/fish/vendor_completions.d                                                                                                                                                                                 
/usr/share/fish/vendor_completions.d/pass.fish                                                                                                                                                                       
/usr/share/pass                                                                                                                                                                                                      
/usr/share/pass/kedpm2pass.py                                                                                                                                                                                        
/usr/share/pass/keepassx2pass.py                                                                                                                                                                                     
/usr/share/pass/pwsafe2pass.sh                                                                                                                                                                                       
/usr/share/pass/lastpass2pass.rb                                                                                                                                                                                     
/usr/share/pass/kwallet2pass.py                                                                                                                                                                                      
/usr/share/pass/keepass2pass.py                                                                                                                                                                                      
/usr/share/pass/gorilla2pass.rb                                                                                                                                                                                      
/usr/share/pass/revelation2pass.py                                                                                                                                                                                   
/usr/share/pass/fpm2pass.pl                                                                                                                                                                                          
/usr/share/pass/1password2pass.rb                                                                                                                                                                                    
/usr/share/bash-completion                                                                                                                                                                                           
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/pass
/usr/share/zsh
/usr/share/zsh/vendor-completions
/usr/share/zsh/vendor-completions/_pass
/usr/bin
/usr/bin/pass

初始化本地密码仓库

在使用密码工具之前,你需要执行一次初始化步骤,该步骤包括创建一个GPG密钥对(如果你还没有)以及一个本地密码仓库。

首先,通过以下步骤创建一个GPG密钥对(即:公钥/私钥)。如果已经创建了自己的GPG密钥对,可以跳过此步骤。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gpg --gen-key

执行该步骤,会询问你如下问题。如果你不确定,可以选择接受默认回答。作为密钥生成部分,你将要为你的密钥创建一个加密口令,这个口令实际上是你访问存储在本地密码仓库中的任何密码信息时的主密码。成功创建密钥对后,创建的密钥对会存储在~/.gnupg目录中。

接下来,运行以下命令来初始化本地密码仓库。下面的,输入之前创建密钥对时的关联电子邮件地址。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass init <gpg-id>

该命令会在~/.password-store目录中创建一个密码仓库。

在终端使用pass管理密码

插入新密码信息

要将新的密码信息插入到本地密码仓库中,请遵循以下命令格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass insert <password-name>

是你定义的专有名称,并且可以分级(如 "finance/tdbank", "online/gmail.com")。在这种情况下,密码信息可以存储到~/.password-store目录下对应的子目录中。

如果你想要分多行插入密码信息,请像以下命令一样使用"-m"选项。以你自己喜欢的任何格式来输入密码信息,然后按Ctrl+D来结束。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass insert <password-name> -m
查看所有密码名称列表

要查看所有存储的密码名称列表,只需输入"pass"命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass
从密码仓库中取回密码信息

要访问特定密码列表中的内容,只需使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass <password-name>

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass email/gmail.com

会要求你输入密码口令来解锁密钥。

如果你想要将密码复制到剪贴板,而不是显示到终端屏幕上,使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass -c email/gmail.com

当密码被复制到剪贴板,剪贴板在45秒后会被自动清空。

在密码仓库中生成并存储新密码

使用pass命令,你也可以生成一个新的随机密码,该密码可用于任何目的。pass工具将会使用pwgen工具来生成一个好的随机密码。你可以指定密码的长度,或者生成带或不带符号的密码。

例如,要生成一个具有10个字符不带符号的密码,并将它存储到 "email/new_service.com"列表中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass generate email/new_service.com 10 -n
移除密码信息

要移除现存的密码信息是很容易的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pass rm email/gmail.com

数据组织

用户名,密码,PIN,网站,元数据等等

密码存储不会强加任何特定的模式或数据组织类型,因为它只是一个可以包含任意数据的平面文本文件。尽管最常见的情况是每个条目存储一个密码,但一些高级用户发现他们希望在密码存储区中存储的不仅仅是他们的密码,还存储对秘密问题,网站URL以及其他敏感信息或元数据的回答。由于密码存储没有强加一个自己的方案,你可以选择你自己的组织。有很多可能性。

一种方法是使用pass(--multiline-min insert)的多行功能,并将密码本身存储在文件的第一行,以及后续行中的附加信息。例如,Amazon/bookreader可能看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Yw|ZSNH!}z"6{ym9pI
URL: *.amazon.com/*
Username: AmazonianChicken@example.com
Secret Question 1: What is your childhood best friend's most bizarre superhero fantasy? Oh god, Amazon, it's too awful to say...
Phone Support PIN #: 84719

这是作者使用的首选组织方案。--clip/ -c选项只会复制这样的文件到剪贴板中的第一行,从而容易获取的登录表单的密码,同时保持在同一个文件的其他信息。

另一种方法是使用文件夹,并将每个数据片段存储在该文件夹中的文件中。例如Amazon/bookreader/password在书目内藏书读者的密码Amazon/bookreader,并且Amazon/bookreader/secretquestion1会有一个秘密的问题,并且Amazon/bookreader/sensitivecode会保存与书籍读者帐号有关的其他东西。而另一种方法可能是将密码Amazon/bookreader和其他数据存储在其中Amazon/bookreader.meta。甚至另一种方法可能是使用多行,如上所述,但将URL模板放在文件名中,而不是在文件中。

重点是,这里的可能性非常之多,而且还有许多其他组织方案没有在上面提到; 您可以自由选择最适合您工作流程的。

pass的扩展

为了便于用户提出各种各样的用途,pass支持扩展。安装的扩展/usr/lib/password-store/extensions(或某些特定于发行版的扩展)始终处于启用状态。~/.password-store/EXTENSION.bash如果PASSWORD_STORE_ENABLE_EXTENSIONS环境变量为“ trueRead the man page”,则安装的扩展已启用以获取更多详细信息。

社区已经产生了许多这样的扩展:

兼容的客户端

社区为各种平台组装了令人印象深刻的客户端和GUI:

迁移到 pass

为了从其他(臃肿的)密码管理器的离合器中释放密码数据,各种用户已经想出了最适合他们的不同的密码存储组织。一些用户提供了脚本来帮助从其他程序导入密码:

小结一下,pass是及其灵活,便于携带,并且更为重要的是,易于使用。对于正在寻找能简单而行之有效地、安全地、并且不依赖图形化管理任何私人信息的工具的人,笔者强烈推荐pass。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Mac Homebrew使用说明
Homebrew是一款自由及开放源代码的软件包管理系统,用以简化Mac OS X系统上的软件安装过程,最初由Max Howell写成。因其可扩展性得到了一致好评,并在Ruby on Rails社区广为人知。
郭顺发
2023/07/06
4280
Vulhub系列:Os-hackNos
靶机链接: https://www.vulnhub.com/entry/hacknos-os-hacknos,401/
Ms08067安全实验室
2019/12/02
1.5K0
Linux之locate命令
命令简介 locate(locate) 命令用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用upd
入门笔记
2021/02/23
7300
2024全网最为详细的红帽系列【RHCSA-(16)】初级及进阶Linux保姆级别骚操作教程;学不废来坎我[就怕你日后学成黑客了]
RPM包签名验证提供了额外的保护措施,以确保软件包的完整性和真实性。它可以防止未经授权的修改和潜在的安全风险。通过验证RPM包的数字签名,用户可以信任并安全地安装软件包到他们的系统中。
盛透侧视攻城狮
2024/10/22
1020
自动化运维利器 ansible-入门
ansible 是一款强大的配置管理工具,诣在帮助系统管理员高效率地管理成百上千台主机。设想一个主机是一个士兵,那么有了 ansible ,作为系统管理员的你就是一个将领,你可以通过口头命令,即一次下发一条命令(ansible ad-hoc 模式)方式让一个或一组或全部的士兵按你的指令行事,也可以将多条命令写在纸上(ansible playbook 模式), 需要执行命令时只需要提供这张纸即可。你可以让多个士兵同时做相同或不同的事情,可以方便的让新加入的士兵快速加入已有的兵种队伍,也以快速改变兵种(配置管理),一句话,士兵都严格听你的,你做好命令的设计,ansible 自动帮你发布和执行。
somenzz
2020/12/10
1.7K0
Maven 中央仓库提交Jar包全程指南
本文记录一下将jar上传到maven中央仓库的全过程,文中项目依托在github上,使用的是mac环境 (关于maven、jdk的环境配置不属于本文内容)
一灰灰blog
2020/12/08
6780
MacBook 包管理 HomeBrew 安装
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/11/04
1.3K0
如何让Python不回显获取密码输入
具体来说,我使用一个名为 Mutt 的应用作为我的电子邮件客户端。它可以让我在我的 Linux 终端中阅读和撰写电子邮件,但通常它希望在其配置文件中有一个密码。我限制了我的 Mutt 配置文件的权限,以便只有我可以看到它,我是我的笔记本电脑的唯一用户,所以我并不真的担心经过认证的用户会无意中看到我的配置文件。相反,我想保护自己,无论是为了吹嘘还是为了版本控制,不至于心不在焉地把我的配置发布到网上,把我的密码暴露了。此外,虽然我不希望我的系统上有不受欢迎的客人,但我确实想确保入侵者不能通过对我的配置上运行 cat 就获得我的密码。
用户9236362
2021/11/30
1.1K0
Mac安装brew,安装wget「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137707.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
9780
Zipkin链路追踪HTTP与RabbitMQ方式
上一篇只是单纯的从原理上以及控制台上去实践系统之间的打通,但是如果能从页面上去看每一个请求日志的链路情况就更好了。其实zipkin是提供了一个UI后台管理给到我们的。
chengcheng222e
2021/11/04
9700
pipx在隔离环境中运行python应用
阿超
2024/09/27
3190
如何在Debian 11上安装开源的Bitwarden密码管理器
Bitwarden 是一个免费的开源密码管理器,可将网站凭据存储在加密的保险库中,它允许您存储所有登录凭据,并使它们在所有设备之间保持同步。
网络技术联盟站
2022/01/04
9920
如何在Debian 11上安装开源的Bitwarden密码管理器
让Python不回显获取密码输入的命令
正如通常的情况一样,有一个 Python 模块已经解决了我的问题。这个模块是 getpass4,从用户的角度来看,它的行为和 input 完全一样,只是不显示用户输入的内容。
用户8989785
2021/09/13
1.1K0
mac os 安装 brew
Install Brew Install Homebrew $ cd /usr/local/ $ mkdir homebrew $ sudo chown -R $(whoami) /usr/local/homebrew $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 执行过程 ==> This script will install: /usr/lo
大数据工程师-公子
2019/03/14
1.5K0
用 Chezmoi 取回你的点文件
在 Linux 中,点文件是隐藏的文本文件,从 Bash、Git 到 i3 或 VSCode 等更复杂的许多应用程序,都用它存储配置设置。
用户1880875
2021/09/18
8410
mac 安装HomeBrew
homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等功能。通过简单的指令可以实现包管理,而不用关心各种依赖和文件路径情况。
IT小马哥
2025/04/28
1480
如何使用Python-GnuPG和Python 3验证代码和加密数据
GnuPG包提供用于生成和存储加密密钥的完整解决方案。它还允许您加密和签名数据和通信。
你在哪里
2018/08/03
5K0
ubuntu普通用户编译安装Python3教程
众所周知,root用户在linux系统中拥有至高无上的权力,为所欲为,想干嘛就干嘛。所以当然不能随随便便给人家用root账户去搞事情啊,这里就有了用普通用户安装使用python的想法,一起来看看吧。
江涛学编程
2021/12/15
1.3K0
Linux基础命令行使用技巧
描述:本章主要学习并记录了Linux中命令行补全以及参数补全的实现方法,还Linux中执行过的命令进行查看,让您想Hacker一样操作终端;
全栈工程师修炼指南
2022/09/29
6.1K0
Linux基础命令行使用技巧
>>技术应用:CentOS(Linux)的解压工具7za
看到这个第一眼,不知道怎么处理了,最后运维告知需要使用7za工具处理。为了巩固自己所学,下面开始研究下这个软件工具。
艾特
2023/10/10
6340
相关推荐
Mac Homebrew使用说明
更多 >
加入讨论
的问答专区 >
1产品KOL擅长5个领域
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    本文部分代码块支持一键运行,欢迎体验
    本文部分代码块支持一键运行,欢迎体验