在github上存储或不存储文件中的特定行

在github上存储或不存储文件中的特定行,git,security,github,Git,Security,Github,我有各种各样的脚本,我想让其他几个人使用他们自己的帐户。我将这些脚本保存在github repo中 假设我有一个bash脚本,可以通过以下方式ssh到计算机中: username=crzyuser123 ssh -XY $username@specialcomputer.com 现在我没有发疯,我没有在脚本中存储我的密码(使用rsa pub/private Key),但假设这是一个非常方便的脚本,我一直在使用和更新,其他人也一直在使用它(但他们显然有不同的用户名) 我想做的是说,“git pu

我有各种各样的脚本,我想让其他几个人使用他们自己的帐户。我将这些脚本保存在github repo中

假设我有一个bash脚本,可以通过以下方式ssh到计算机中:

username=crzyuser123
ssh -XY $username@specialcomputer.com
现在我没有发疯,我没有在脚本中存储我的密码(使用rsa pub/private Key),但假设这是一个非常方便的脚本,我一直在使用和更新,其他人也一直在使用它(但他们显然有不同的用户名

我想做的是说,“git pull,然后编辑文件中的这一行,这样你的用户名就在那里,然后忘记它!”每次他们git pull更新他们的回购协议时,这一行保持不变

当然,他们可以在每次更新回购协议时更新这一行,但这似乎是一个巨大的痛苦。我还需要以不太困难的方式传达任何解决方案

使这种情况对所有相关人员来说都最简单的最佳做法是什么?

一种可能的解决方案

建立一个新帐户,在机器上说“jdoe”。将公钥放入
/home/jdoe/.ssh/authorized_keys
,并在适当的地方粘贴repo(或克隆)。将使用脚本的每个用户的公钥添加到脚本中相同的
authorized_key
文件和硬编码
jdoe

有更清洁的解决方案,但这可能是获得你想要的东西的最快方法


编辑:如果您需要授予他们访问权限的是github,您可能需要建立一个组织,或者让他们专门为github生成一个密钥对。仍然需要在正确的位置添加他们的公钥。

最好的做法是根本不在文件中存储用户名/密码。将这些值作为参数传递给脚本。或者从配置文件中读取它们。但从一开始就不要硬编码这样的东西。即使它“只是一个shell脚本”

如果您将它们作为参数传递,希望使用您的脚本的用户可以将自己的脚本包装起来,使用适当的参数调用您的脚本,或者手动传递参数


有了一个配置文件,每个人都可以拥有一个正确的配置文件,而不必提交给repo。

我找到了一种不将用户名存储在bash脚本中的方法。下面是我实现的bash解决方案:

# If an argument is passed, set as supercomputer username
if [ $# -eq 1 ]
then
  username=$1
# Else, use the current username as the supercomputer username
else
  username=$LOGNAME
fi

这允许脚本自动运行(假设当前用户与超级计算机用户名相同)。如果有人需要输入不同的用户名,脚本将采用该用户名。

请注意,这会变得很棘手。“specialcomputer”实际上是约30台计算机中的一台——由脚本在运行时以合理的方式选择(比如,每次运行时,它可能是其中的任何一台)。脚本是让用户以自己的身份登录到那台计算机上,而不是以jdoe或其他用户的身份登录。这会改变一切。也许您可以添加一个文件,比如“settings.tmpl.sh”,该文件中有一个用户名或其他内容的位置以及填写说明,将其复制到“settings.sh”或其他位置,并将“settings.sh”放在.gitignore中。。。或者类似的。呃,我忘了在你的脚本中提到设置文件的来源。是的,我也开始考虑这条路线。。。我想这基本上就是我要做的,除非有人想出一些非常聪明的东西。FWIW,这是一种相当常见的“VC中特定于用户的配置文件”模式。