我正在尝试从我的私人git存储库中克隆,希望在一行中输入密码。
我正在尝试这样的事情:
期待-c'生成git clone user @ 。。* 。 *:/ var /.../ repository.git /;期待“(是/否)?”;发送“是\ n”;期待“密码:”;发送“my_password \ n”;互动'
但是,它不起作用。 我究竟做错了什么?如何修复上面的命令行?
谢谢,Arshavdki Alexander
答案 0 :(得分:2)
为什么不使用比密码更安全的东西来简化生活?
没有密码的ssh密钥显着更安全,而且根本没有提示。
如果它必须是100%自包含的,那么考虑让脚本输出SSH密钥,使用一次,然后将其删除。 (这应该保持您的安全状况不变:密码在脚本中有效,您可以接受。)
# Output SSH key for no-password login. (Could use mktemp instead)
cat > /tmp/ssh_key.$$ <<EOT
-----BEGIN RSA PRIVATE KEY-----
blahblahblah
-----END RSA PRIVATE KEY-----
EOT
# Make a SSH wrapper to do the right thing
cat > /tmp/git_ssh.$$ <<EOT
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /tmp/ssh_key.$$ "$@"
EOT
chmod +x /tmp/git_ssh.$$
export GIT_SSH=/tmp/git_ssh.$$
# Done!
git clone user@host:path/to/repo
# Cleanup
rm -f /tmp/git_ssh.$$ /tmp/ssh_key.$$
是的,这个脚本看起来很笨重但是(模数错误)它是自包含的,对于自动化非常有用。
答案 1 :(得分:2)
您可以通过在网址
中直接输入密码来避免使用expectgit clone https://username:password@github.com/username/repository.git
请注意 - 这会导致您的密码存储在.git文件中,从而使其永久不安全。
但是,您可以省略密码:
git clone https://username@github.com/username/repository.git
git会询问您密码,它不会保存在.git / config中,也不会保存在您的bash历史记录中