2017年4月

LCTT 译注: 终端节点 Endpoint ,详情请见: http://docs.amazonaws.cn/general/latest/gr/rande.html

最新发布的 GO 的 SDK v1.6.0 版本,加入了获取区域与终端节点信息的功能。它可以很方便地列出区域、服务和终端节点的相关信息。可以通过 github.com/aws/aws-sdk-go/aws/endpoints 包使用这些功能。

endpoints 包提供了一个易用的接口,可以获取到一个服务的终端节点的 url 列表和区域列表信息。并且我们将相关信息根据 AWS 服务区域进行了分组,如 AWS 标准、AWS 中国和 AWS GovCloud(美国)。

解析终端节点

设置 SDK 的默认配置时, SDK 会自动地使用 endpoints.DefaultResolver 函数。你也可以自己调用包中的EndpointFor 方法来解析终端节点。

// 解析在us-west-2区域的S3服务的终端节点
resolver := endpoints.DefaultResolver()
endpoint, err := resolver.EndpointFor(endpoints.S3ServiceID, endpoints.UsWest2RegionID)
if err != nil {
        fmt.Println("failed to resolve endpoint", err)
        return
}

fmt.Println("Resolved URL:", endpoint.URL)

如果你需要自定义终端节点的解析逻辑,你可以实现 endpoints.Resolver 接口,并传值给aws.Config.EndpointResolver。当你打算编写自定义的终端节点逻辑,让 SDK 可以用来解析服务的终端节点时候,这个功能就会很有用。

以下示例,创建了一个配置好的 Session,然后 Amazon S3 服务的客户端就可以使用这个自定义的终端节点。

s3CustResolverFn := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) {
        if service == "s3" {
               return endpoints.ResolvedEndpoint{
                       URL:           "s3.custom.endpoint.com",
                       SigningRegion: "custom-signing-region",
               }, nil
        }

        return defaultResolver.EndpointFor(service, region, optFns...)
}
sess := session.Must(session.NewSessionWithOptions(session.Options{
        Config: aws.Config{
               Region:           aws.String("us-west-2"),
               EndpointResolver: endpoints.ResolverFunc(s3CustResolverFn),
        },
}))

分区

endpoints.DefaultResolver 函数的返回值可以被 endpoints.EnumPartitions接口使用。这样就可以获取 SDK 使用的分区片段,也可以列出每个分区的分区信息。

// 迭代所有分区表打印每个分区的ID
resolver := endpoints.DefaultResolver()
partitions := resolver.(endpoints.EnumPartitions).Partitions()

for _, p := range partitions {
        fmt.Println("Partition:", p.ID())
}

除了分区表之外,endpoints 包也提供了每个分区组的 getter 函数。这些工具函数可以方便列出指定分区,而不用执行默认解析器列出所有的分区。

partition := endpoints.AwsPartition()
region := partition.Regions()[endpoints.UsWest2RegionID]

fmt.Println("Services in region:", region.ID())
for id, _ := range region.Services() {
        fmt.Println(id)
}

当你获取区域和服务值后,可以调用 ResolveEndpoint。这样解析端点时,就可以提供分区的过滤视图。

获取更多 AWS SDK for GO 信息, 请关注其开源仓库。若你有更好的看法,请留言评论。


via: https://aws.amazon.com/cn/blogs/developer/using-the-aws-sdk-for-gos-regions-and-endpoints-metadata

作者:Jason Del Ponte 译者:Vic020 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这些练习目前已经支持 33 种编程语言了。

 title=

我们中的很多人的 2017 年目标,将提高编程能力或学习如何编程放在第一位。虽然我们有许多资源可以访问,但练习独立于特定职业的代码开发的艺术还是需要一些规划。Exercism.io 就是为此目的而设计的一种资源。

Exercism 是一个 开源 的项目和服务,通过发现和协作,帮助人们提高他们的编程技能。Exercism 提供了几十种不同编程语言的练习。实践者完成每个练习,并获得反馈,从而可以从他们的同行小组的经验中学习。

这里有这么多同行! Exercism 在 2016 年留下了一些令人印象深刻的统计:

  • 有来自 201 个不同国家的参与者
  • 自 2013 年 6 月以来,29,000 名参与者提交了练习,其中仅在 2016 年就有 15,500 名参加者提交练习
  • 自 2013 年 6 月以来,15,000 名参与者就练习解决方案提供反馈,其中 2016 年有 5,500 人提供反馈
  • 每月 50,000 名访客,每周超过 12,000 名访客
  • 目前的练习已经支持 33 种编程语言,另外 22 种语言在筹备工作中

该项目为各种级别的参与者提供了一系列小小的挑战,使他们能够“即使在低水平也能发展到高度谙熟”,Exercism 的创始人 Katrina Owen 这样说到。Exercism 并不旨在教导学员成为一名职业程序员,但它的练习使他们对一种语言及其瑕疵有深刻的了解。这种熟悉性消除了学习者对语言的认知负担(使之更谙熟),使他们能够专注于更困难的架构和最佳实践的问题。

Exercism 通过一系列练习(或者还有别的?)来做到这一点。程序员下载命令行客户端,检索第一个练习,添加完成练习的代码,然后提交解决方案。提交解决方案后,程序员可以研究他人的解决方案,并学习到对同一个问题不同的解决方式。更重要的是,每个解决方案都会收到来自其他参与者的反馈。

反馈是 Exercism 的超级力量。鼓励所有参与者不仅接收反馈而且提供反馈。根据 Owen 说的,Exercism 的社区成员提供反馈比完成练习学到更多。她说:“这是一个强大的学习经验,你需要发表内心感受,并检查你的假设、习惯和偏见”。她还指出,反馈可以有多种形式。

欧文说:“只需进入,观察并发问”。

那些刚刚接触编程,甚至只是接触了一种特定语言的人,可以通过预设好的问题来提供有价值的反馈,同时通过协作和对话来学习。

除了对新语言的 “微课”学习 bite-sized learning 之外,Exercism 本身还强烈支持和鼓励项目的新贡献者。在 SitePoint.com 的一篇文章中,欧文强调:“如果你想为开源贡献代码,你所需要的技能水平只要‘够用’即可。” Exercism 不仅鼓励新的贡献者,它还尽可能地帮助新贡献者发布他们项目中的第一个补丁。到目前为止,有近 1000 人成为 Exercism 项目的贡献者。

新贡献者会有大量工作让他们忙碌。 Exercism 目前正在审查其语言发展轨迹的健康状况,目的是使所有发展轨迹可持续并避免维护者的倦怠。它还在寻求捐赠和赞助,聘请设计师提高网站的可用性。

Owen 说:“这些改进对于网站的健康以及为了 Exercism 参与者的发展是有必要的,这些变化还鼓励新贡献者加入并简化了加入的途径。” 她说:“如果我们可以重新设计,产品方面将更加可维护……当用户体验一团糟时,华丽的代码一点用也没有”。该项目有一个非常活跃的讨论仓库,这里社区成员合作来发现最好的新方法和功能。

那些想关注项目但还没有参与的人可以关注邮件列表


作者简介:

VM(Vicky)Brasseur - VM(也称为 Vicky)是技术人员、项目、流程、产品和 p^Hbusinesses 的经理。在她超过 18 年的科技行业从业中,她曾是分析师、程序员、产品经理、软件工程经理和软件工程总监。 目前,她是 Hewlett Packard Enterprise 上游开源开发团队的高级工程经理。 VM 的博客在 anonymoushash.vmbrasseur.com,tweets 是 @vmbrasseur。


via: https://opensource.com/article/17/1/exercism-learning-programming

作者:VM (Vicky) Brasseur 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

早前的一篇文章中,我们深入讨论了 sudo 命令的相关内容。同时,在该文章的末尾有提到相关的命令 su 的部分内容。本文,我们将详细讨论关于 su 命令与 sudo 命令之间的区别。

在开始之前有必要说明一下,文中所涉及到的示例教程都已经在 Ubuntu 14.04 LTS 上测试通过。

Linux su 命令

su 命令的主要作用是让你可以在已登录的会话中切换到另外一个用户。换句话说,这个工具可以让你在不登出当前用户的情况下登录为另外一个用户。

su 命令经常被用于切换到超级用户或 root 用户(因为在命令行下工作,经常需要 root 权限),但是 - 正如前面所提到的 - su 命令也可以用于切换到任意非 root 用户。

如何使用 su 命令切换到 root 用户,如下:

不带命令行参数的 su 命令

如上,su 命令要求输入的密码是 root 用户的密码。所以,一般 su 命令需要输入目标用户的密码。在输入正确的密码之后,su 命令会在终端的当前会话中打开一个子会话。

su -

还有一种方法可以切换到 root 用户:运行 su - 命令,如下:

su - 命令

那么,su 命令与 su - 命令之间有什么区别呢?前者在切换到 root 用户之后仍然保持旧的(或者说原始用户的)环境,而后者则是创建一个新的环境(由 root 用户 ~/.bashrc 文件所设置的环境),相当于使用 root 用户正常登录(从登录屏幕登录)。

su 命令手册页很清楚地说明了这一点:

可选参数 - 可提供的环境为用户在直接登录时的环境。

因此,你会觉得使用 su - 登录更有意义。但是, su 命令也是有用的,那么大家可能会想知道它在什么时候用到。以下内容摘自 ArchLinux wiki 网站 - 关于 su 命令的好处和坏处:

  • 有的时候,对于系统管理员(root)来讲,使用其他普通用户的 Shell 账户而不是自己的 root Shell 账户更会好一些。尤其是在处理用户问题时,最有效的方法就是是:登录目标用户以便重现以及调试问题。
  • 然而,在多数情况下,当从普通用户切换到 root 用户进行操作时,如果还使用普通用户的环境变量的话,那是不可取甚至是危险的操作。因为是在无意间切换使用普通用户的环境,所以当使用 root 用户进行程序安装或系统更改时,会产生与正常使用 root 用户进行操作时不相符的结果。例如,以普通用户安装程序会给普通用户意外损坏系统或获取对某些数据的未授权访问的能力。

注意:如果你想在 su - 命令的 - 后面传递更多的参数,那么你必须使用 su -l 而不是 su -。以下是 --l 命令行选项的说明:

-, -l, --login

提供相当于用户在直接登录时所期望的环境。

当使用 - 时,必须放在 su 命令的最后一个选项。其他选项(-l--login)无此限制。

su -c

还有一个值得一提的 su 命令行选项为:-c。该选项允许你提供在切换到目标用户之后要运行的命令。

su 命令手册页是这样说明:

-c, --command COMMAND

使用 -c 选项指定由 Shell 调用的命令。

被执行的命令无法控制终端。所以,此选项不能用于执行需要控制 TTY 的交互式程序。

参考示例:

su [target-user] -c [command-to-run]

示例中,command-to-run 将会被这样执行:

[shell] -c [command-to-run]

示例中的 shell 类型将会被目标用户在 /etc/passwd 文件中定义的登录 shell 类型所替代。

sudo vs. su

现在,我们已经讨论了关于 su 命令的基础知识,是时候来探讨一下 sudosu 命令之间的区别了。

关于密码

两个命令的最大区别是:sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。

很明显,就安全而言,sudo 命令更好。例如,考虑到需要 root 访问权限的多用户使用的计算机。在这种情况下,使用 su 意味着需要与其他用户共享 root 用户密码,这显然不是一种好习惯。

此外,如果要撤销特定用户的超级用户/root 用户的访问权限,唯一的办法就是更改 root 密码,然后再告知所有其他用户新的 root 密码。

而使用 sudo 命令就不一样了,你可以很好的处理以上的两种情况。鉴于 sudo 命令要求输入的是其他用户自己的密码,所以,不需要共享 root 密码。同时,想要阻止特定用户访问 root 权限,只需要调整 sudoers 文件中的相应配置即可。

默认行为

两个命令之间的另外一个区别是其默认行为。sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。

因此,su 命令的默认行为是有风险的,因为用户很有可能会忘记他们正在以 root 用户身份进行工作,于是,无意中做出了一些不可恢复的更改(例如:对错误的目录运行 rm -rf 命令!)。关于为什么不鼓励以 root 用户身份进行工作的详细内容,请参考这里

日志记录

尽管 sudo 命令是以目标用户(默认情况下是 root 用户)的身份执行命令,但是它们会使用 sudoer 所配置的用户名来记录是谁执行命令。而 su 命令是无法直接跟踪记录用户切换到 root 用户之后执行了什么操作。

灵活性

sudo 命令比 su 命令灵活很多,因为你甚至可以限制 sudo 用户可以访问哪些命令。换句话说,用户通过 sudo 命令只能访问他们工作需要的命令。而 su 命令让用户有权限做任何事情。

sudo su

大概是因为使用 su 命令或直接以 root 用户身份登录有风险,所以,一些 Linux 发行版(如 Ubuntu)默认禁用 root 用户帐户。鼓励用户在需要 root 权限时使用 sudo 命令。

然而,您还是可以成功执行 su 命令,而不用输入 root 用户的密码。运行以下命令:

sudo su

由于你使用 sudo 运行命令,你只需要输入当前用户的密码。所以,一旦完成操作,su 命令将会以 root 用户身份运行,这意味着它不会再要求输入任何密码。

PS:如果你想在系统中启用 root 用户帐户(强烈反对,因为你可以使用 sudo 命令或 sudo su 命令),你必须手动设置 root 用户密码,可以使用以下命令:

sudo passwd root

结论

当你需要可用的工具来提升(或一组完全不同的)权限来执行任务时,这篇文章以及之前的教程(其中侧重于 sudo 命令)应该能给你一个比较好的建议。 如果您也想分享关于 susudo 的相关内容或者经验,欢迎您在下方进行评论。


via: https://www.howtoforge.com/tutorial/sudo-vs-su/

作者:Himanshu Arora 译者:zhb127 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

 title=

印度的自由和开源社区,特别是 Mozilla 和 Wikimedia 社区,它们正在引领两个独特的全球性活动,以提高隐私保护及支持自由软件。

1 月份的隐私月是由印度 Mozilla 社区领导,通过在线和线下活动向群众教育网络隐私。而 2 月份的自由月是由互联网与社会中心领导,教育内容创作者如博主和摄影师就如何在开放许可证下捐赠内容。

1 月隐私月

去年开始的 Mozilla “1 月隐私月”用来帮助庆祝年度数据隐私日(Data Privacy Day)。在 2016 年,该活动举办了几场涉及到全球 10 个国家 14,339,443 人的线下和线上活动。其中一个核心组织者,Ankit Gadgil 这样说到:“每天分享一个隐私提示,持续一个月就能分享 31 天。”今年,我们共有三个重点领域,首先是我们让这个运动更加开放和全球化。巴西、意大利、捷克共和国的 Mozilla 社区今年正在积极参与,所有必要的文档都是本地化的,所以我们可以针对更多的用户。其次,我们在线下活动中教导用户推广 Firefox 以及 Mozilla 的其他产品,以便用户可以亲身体验使用这些工具来帮助保护他们的隐私。第三点,我们鼓励大家参加线下活动并把他们的学习写到博客里面去,例如,最近在印度古吉拉特邦的一个节目中,他们使用 Mozilla 产品来教授隐私方面的知识。”

今年的活动继续有线下和线上活动。关注 #PrivacyAware 参加。

安全提示

像 Firefox 这样的 Mozilla 产品具有安全性设置-有内置的还有对残疾人完全可用的附件库-这有助于保护用户的隐私和安全性,这些都是协同构建的并且是开源的。

ChromeOpera 中的 HTTPS Everywhere 插件可用于加密用户通信,使外部网站无法查看用户信息。该项目由 Tor Project 以及电子前沿基金会合作建成。

2 月自由月

2 月自由月是一个网络活动,旨在教育内容创作者关于自由内容,并向他们展示如何在自由许可证下作出贡献。

参加规则:

  • 你在二月份制作或出版的作品必须获得自由许可证许可。
  • 内容类型包括博客文章、其他文字和图像。

多媒体,基于文本的内容,艺术和设计等创意作品可以通过多个知识共享许可证(CC)进行许可,其他类型的文档可以根据 GNU 免费文档许可(GFDL)许可。Wikipedia 上可以找到很好的例子,其内容根据 CC 和 GFDL 许可证获得许可,允许人们使用、分享、混合和分发衍生用于商业上和非商业性的作品。此外,还有允许开发人员共享他们的软件和软件相关文档的自由软件许可证

(题图提供: opensource.com)


作者简介:

Subhashish Panigrahi(@shhapa)是 Mozilla 参与团队的亚洲社区催化师,并在 Wikimedia 基金会印度计划的早期扮演了互联网及社会知识获取中心项目官的角色,另外他是一名印度教育工作者,


via: https://opensource.com/article/17/1/how-communities-india-support-privacy-software-freedom

作者:Subhashish Panigrahi 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们已经讲过 Linux 中一些基于命令行的比较和合并工具,再来讲解该系统的一些可视化的比较与合并工具也很合理。首要的原因是,不是每个人都习惯使用命令行,而且对于某些人来说,基于命令行的比较工具可能很难学习和理解。

因此,我们将会推出关于可视化工具 Meld 的系列文章。

在跳到安装和介绍部分前,我需要说明这篇教程里所有的指令和用例是都是可用的,而且它们已经在 Ubuntu 14.04 中测试过了,我们使用的 Meld 版本是 3.14.2。

关于 Meld

Meld 主要是一个可视化的比较和合并的工具,目标人群是开发者(当然,我们将要讲到的其它部分也会考虑到最终用户)。这个工具同时支持双向和三向的比较,不仅仅是比较文件,还可以比较目录,以及版本控制的项目。

“Meld 可以帮你回顾代码改动,理解补丁,”其官网如是说。“它甚至可以告知你如果你不进行合并将会发生什么事情。”该工具使用 GPL v2 协议进行授权。

安装 Meld

如果你用的是 Ubuntu 或者其它基于 Debian 的 Linux 分支,你可以用以下命令下载安装 Meld:

sudo apt-get install meld

或者你也可以用系统自带的包管理软件下载这个工具。比如在 Ubuntu 上,你可以用 Ubuntu 软件中心 Ubuntu Software Center ,或者用 Ubuntu 软件,它从 Ubuntu 16.04 版本开始取代了 Ubuntu 软件中心。

当然,Ubuntu 官方仓库里的 Meld 版本很有可能比较陈旧。因此如果你想要用更新的版本,你可以在这里下载软件包。如果你要用这个方法,你要做的就是解压下载好的软件包,然后运行 bin 目录下的 meld 程序。

~/Downloads/meld-3.14.2/bin$ ./meld 

以下是 Meld 依赖的软件,仅供参考:

  • Python 2.7 (Python 3.3 开发版)
  • GTK+ 3.14
  • GLib 2.36
  • PyGObject 3.14
  • GtkSourceView 3.14
  • pycairo

使用 Meld

装好了软件,就可以看到类似这样的画面:

Meld started

有三个选项: 比较文件 File comparison 比较目录 Directory comparison 以及 版本控制视图 Version control view

点击“比较文件”选项,就可以选择需要比较的文件:

Meld file comparison

就像上面的截图那样明白,Meld 也可以进行三向比较,但是在这一系列文章的第一部分,我们只会讲更常用的双向比较。

接着,选择你想要比较的文件,点击 “比较” Compare 按钮。软件会在两边分别打开两个文件,高亮不同的行(以及不同的部分)。

Compare files in Meld

两个文件的不同之处在第二行,差别在于 file2 文件的第二行多了一个 3。你看到的黑色箭头是用来进行合并或修改的操作的。该例中,向右的箭头将会把 file2 文件的第二行改成文件 file1 中对应行的内容。左向箭头做的事情相反。

做完修改后,按下 Ctrl+s 来保存。

这个简单的例子,让你知道 Meld 的基本用法。让我们看一看稍微复杂一点的比较:

Meld advanced file comparison

在讨论这些变化前,这里提一下, Meld 的界面中有几个区域,可以给出文件之间的差异,让概况变得直观。这里特别需要注意窗口的左右两边垂直的栏。比如下面这个截图:

Visual Comparison

仔细观察,图中的这个栏包含几个不同颜色的区块。这些区块是用来让你对文件之间的差异有个大概的了解。“每一个着色的区块表示一个部分,这个部分可能是插入、删除、修改或者有差别的,取决于区块所用的颜色。”官方文档是这样说的。

现在,让我们回到我们之前讨论的例子中。接下来的截图展示了用 Meld 理解文件的改动是很简单的(以及合并这些改动):

File changes visualized in Meld

Meld Example 2

Meld Example 3

接着,我们滑动文件,从一个改动跳到另一个。但是,当要比较的文件很大时,这会耗一点时间,当你想要滑动文件跳到一个改动的位置时,也会变得很困难。如果是这种情况的话,你可以用工具栏的橙色箭头,就在编辑区域的上方:

Go to next change in Meld

这些是你使用 Meld 时做的一般性的事情:可以用标准的 Ctrl+f 组合键在编辑区域内进行查找,按 F11 键让软件进入全屏模式,再按 Ctrl+r 来刷新(通常在所有要比较的文件改变的时候使用)。

以下是 Meld 官方网站宣传的重要特性:

  • 文件和目录的双向及三向比较
  • 输入即更新文件的比较
  • 自动合并模式,按块改动的动作让合并更加简单
  • 可视化让比较文件更简单
  • 支持 Git,Bazaar,Mercurial,Subversion 等等

注意还不仅仅只有以上所列的。网站上有个专门的特性页面,里面提到了 Meld 提供的所有特性。这个页面列出的所有特性分为几个部分,以该软件是用来做文件比较、目录比较、版本控制还是处于合并模式下为基础进行划分。

和其它软件相似,有些事情 Meld 做不到。官方网站上列出了其中的一部分:“当 Meld 展示文件之间的差异时,它同时显示两个文件,看起来就像在普通的文本编辑器中。它不会添加额外的行,让左右两边文件的特殊改动处于同样的行数。没有做这个事情的选项。”

总结

我们刚刚了解到的不过是皮毛,因为 Meld 还能做很多事情。考虑到这是教程系列的第一部分,这也挺不错的。这仅仅是让你了解 Meld 的作用,你可以配置它,忽略一些特定类型的改动,让它移动,复制或者删除文件之间的个别差异,也可以从命令行启动它。在即将退出的系列教程中,我们将会讲述所有这些重要功能。


via: https://www.howtoforge.com/tutorial/beginners-guide-to-visual-merge-tool-meld-on-linux/

作者:Ansh 译者:GitFuture 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

继前一段时间 Linux 中国推出了“运维密码”微信小程序之后,经过开发团队的努力,重构了代码和使用了全新的现代 UI 后,同时在 GitHub 上开源了!

“运维密码”小程序是一款工作在微信环境中的小程序,主要的功能是提供一款方便、可靠、美观的 TOTP 密钥管理工具。TOTP 是基于时间的一次性密钥方案,可以为用户认证提供双因子认证(2FA)的支持,即在通常的密码之外,还额外通过另外一种方式来交叉认证以提升安全。

TOTP 认证,或者说双因子认证,在得到 Google 的大力推进之后,得到了广泛的互联网业界的支持,包括 Google、GitHub 等重视互联网安全的大型网站,也包括各类比特币网站,均支持 TOTP RFC 草案所规定的 TOTP 算法,并且 Google 还开源了其服务器端实现和客户端代码。除此之外,TOTP 还广泛应用于 Apple 、QQ、微博等各种需要双因子认证的场景中。除了网站之外,对于我们运维人员来说,TOTP 还可以应用与服务器的远程管理上,为 SSH、SFTP、FTP 等提供安全、简单、可靠的保障!

新版本介绍

好了,言归正传,我们来介绍一下本次新版本发布的情况。

本次版本迭代,我们毫不谦虚的将版本定位到 1.0.x,我们认为“运维密码”的第一阶段功能目标已经达成,目前主要有:

  • 添加 TOTP 场景
  • 查看 TOTP 密钥
  • 修改和删除 TOTP 场景
  • 生成场景二维码
  • 分享(克隆) TOTP 场景给朋友
  • 本地备份 TOTP 场景信息
  • 本地恢复 TOTP 场景信息

新的版本,采用了现代化的 UI 设计,看起来会更专业一点。

场景列表

场景列表会列出你已经添加的所有场景,最上方是时间进度条会显示场景密钥要更新的时间。在列表最下方,可以点击“添加场景”,调出摄像头来扫描密钥二维码来添加场景。

点击场景列表中的场景密钥,会复制该密钥,以备手机上使用。

场景详情

点击场景列表中的场景(非密钥区域),可以查看场景具体详情,在此可以“分享”、“生成二维码”、“编辑”乃至于“删除”场景。

  • 分享:请点击页面右上角的菜单,可以将该场景分享给你的朋友,这样你的朋友就会得到一份该场景的完全复制品。切记!分享该场景会导致别人一直拥有该场景信息,并随时生成密钥(和你的场景生成相同的密钥)。如果这不是你希望的结果,切勿分享。
  • 生成二维码:可以生成一份该场景特定的二维码,将其打印出来贴于服务器等物理环境处,使用时直接用微信扫描即可调出“运维密码”小程序添加该场景。(注:该场景二维码不同于用于添加场景的种子二维码)
  • 编辑和删除:也可以对此场景进行编辑,尤其是你在添加场景时输入的信息不够明确时。也可以在此修改该场景的地点(我们后继的版本会推出地点感知功能)。

生成的场景二维码

场景备份与恢复

场景备份信息,请截屏安全保存

最重要的,“运维密码”小程序提供了备份和恢复功能,这是 Google 所开源的 Google 身份验证器所缺乏的最重要功能。有了备份功能,你就不用担心手机丢失或更换手机的麻烦了。

目前我们提供了本地备份功能。限于微信小程序的限制,我们不能保存文件,只能将备份信息以二维码的方式备份出来。您可以将该二维码截屏,保存到安全可靠的地方,以备以后需要时恢复。

现阶段没有提供远程云端备份功能的主要原因是用户可能忧虑云端备份的隐私保障,因此,我们在没有办法提供一个可靠备份,连服务提供方也不能破解的方法之前,不会提供云端备份功能。

开源啦!

作为一家倡导开源的社区,我们一定要亲自践行开源才算得上名至实归。因此,我们在代码重构稳定之后,第一时间就将“运维密码”开源了出来。开源地址在:

https://github.com/LCTT/WeApp-Password

本项目采用 AGPL 3.0 协议开源。

欢迎大家复刻和提交拉取请求,有什么错误和功能建议,也非常欢迎大家给我们提出 issue

欢迎体验

我们还开设了“运维密码”小程序体验群,欢迎大家到群内发表意见,以及寻求帮助。加入本群也可以及时体验我们发布前的体验版本,第一时刻尝鲜。

运维密码体验群

扫描识别添加上面的好友,验证信息:“运维密码”,可获得入群邀请。

使用参考

要在 OpenSSH 上使用 TOTP,请参考 netb2c 写的《SSH 安全加固篇:通过“运维密码”小程序实现 SSH 双因子认证》。

我们还会陆续推出更多使用 “运维密码”的文章,也欢迎大家给我们投稿。

哦,好像我没有说到如何找到“运维密码”——我想这一定难不倒你,不过假如你不知道的话,你可以如此这般:

  • 在微信中“发现”->“小程序”中搜索“运维密码”即可。
  • 什么,你的“发现”中没有“小程序”,那你可以扫描下面这个二维码,来尝鲜你的第一个小程序:

运维密码

致谢

感谢开发团队的 @Bestony、betty、wxy;

感谢撰写使用“运维密码”的文章的同学:netb2c;

感谢“运维密码”体验群的诸位同学;

感谢 Google 开源的程序;

感谢微信提供的环境。