![SVN 从 bash 脚本提交,无需密码](https://linux22.com/image/1473356/SVN%20%E4%BB%8E%20bash%20%E8%84%9A%E6%9C%AC%E6%8F%90%E4%BA%A4%EF%BC%8C%E6%97%A0%E9%9C%80%E5%AF%86%E7%A0%81.png)
我有一个 bash 脚本,需要将测试结果签入 SVN。问题是,每当我提交到 svn 时,它都需要用户名和密码,而我真的真的不想将它们包含在我的脚本中。我对 Linux/Cygwin 领域还很陌生,所以我知道可能存在一些显而易见的问题……
我在 Windows 8 机器上使用 cygwin
答案1
本质上来说,没有什么显而易见的事情。但这里有一些想法:
当我在工作中编写一个需要访问 svn 的脚本时,我为该脚本创建了一个新用户名,并让该脚本知道如何计算密码。这是通过隐蔽性来实现安全性的,虽然并不安全,但它可以防止旁观者确定密码。(而且由于任何有权访问该脚本的同事也都有自己的 subversion 登录名,因此这实际上不是一个安全风险。)
我在编写脚本时没有想到这一点,但可能会奏效:如果您可以限制对文件的访问,以便只有您的 cygwin 和/或 windows 用户才具有对密钥文件的读取权限,则您的脚本可以使用该密钥的 gpg 来加密/解密包含脚本用户名密码的文件,并使用它来访问 svn。我不知道这是否真的比第一个或第二个选项更安全,因为您必须拥有密钥而没有密码(否则您的情况与 )相同
如果您信任 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#.Vkan8b9mpu8和http://technicalprose.blogspot.com/2011/06/using-subversion-with-gnome-keyring.html)