SVN 从 bash 脚本提交,无需密码

SVN 从 bash 脚本提交,无需密码

我有一个 bash 脚本,需要将测试结果签入 SVN。问题是,每当我提交到 svn 时,它都需要用户名和密码,而我真的真的不想将它们包含在我的脚本中。我对 Linux/Cygwin 领域还很陌生,所以我知道可能存在一些显而易见的问题……

我在 Windows 8 机器上使用 cygwin

答案1

本质上来说,没有什么显而易见的事情。但这里有一些想法:

  1. 当我在工作中编写一个需要访问 svn 的脚本时,我为该脚本创建了一个新用户名,并让该脚本知道如何计算密码。这是通过隐蔽性来实现安全性的,虽然并不安全,但它可以防止旁观者确定密码。(而且由于任何有权访问该脚本的同事也都有自己的 subversion 登录名,因此这实际上不是一个安全风险。)

  2. 我在编写脚本时没有想到这一点,但可能会奏效:如果您可以限制对文件的访问,以便只有您的 cygwin 和/或 windows 用户才具有对密钥文件的读取权限,则您的脚本可以使用该密钥的 gpg 来加密/解密包含脚本用户名密码的文件,并使用它来访问 svn。我不知道这是否真的比第一个或第二个选项更安全,因为您必须拥有密钥而没有密码(否则您的情况与 )相同

  3. 如果您信任 svn 存储密码,则可以使用脚本用户名一次,让其存储密码,然后让脚本以这种方式访问​​ svn。

你可能想看看https://stackoverflow.com/questions/3824513/svn-encrypted-password-store和/或在 Ubuntu Server 上存储加密的 svn 密码的最佳方法是什么?可以帮助您以加密形式存储密码,而不是以纯文本形式存储。在我的工作中,svn 没有使用 gnome-keyring 或 kwallet 支持进行编译,因此我无法尝试它来向您提供有关如何操作的更多详细信息。但我认为 cygwin 的 svn 会将它们编译进去,或者您可以重新编译。

我认为 svn --version 会告诉您是否编译了 gnome-keyring 或 kwallet;如果没有,您也可以使用“ldd which svn”,它将列出所有链接库。查找 libsvn_auth_gnome_keyring-1.so 之类的东西,或者可能与 kwallet 类似的东西。(谢谢http://blogs.collab.net/subversion/subversion-16-security-improvements#.Vkan8b9mpu8http://technicalprose.blogspot.com/2011/06/using-subversion-with-gnome-keyring.html

相关内容