【发布时间】:2017-12-04 05:46:46
【问题描述】:
我工作的开发人员最近离开了,我的任务是回收我们所有的密钥等。
我们使用 BitBucket 进行源代码控制,并且这个特定的开发人员在我们的一台服务器上运行了一个“拉取脚本”,可以将我们开发分支中的任何内容拉取到站点的测试版本中。在我们删除他的 Atlassian 帐户后,它使用了与它一起使用的部署脚本的 SSH 密钥。此后,我生成了新密钥,将公共密钥上传到我的 Atlassian 帐户,并将私有密钥放在服务器上,到目前为止一切顺利。
但是他的部署脚本返回Permission denied (publickey).
当我尝试$ ssh git@bitbucket.org 时,我得到以下信息:
PTY allocation request failed on channel 0
logged in as ChocolateDinosaur.
You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.
这似乎有效? (如果不是这样,请原谅我的无知)
部署脚本如下:
<?php
$commands = array(
'echo $PWD',
'whoami',
'git pull',
'git status',
// 'git submodule sync',
// 'git submodule update',
// 'git submodule status',
);
$output = '';
foreach($commands AS $command){
$tmp = shell_exec($command);
$output .= "<span style=\"color: #6BE234;\">\$</span> <span style=\"color: #729FCF;\">{$command}\n</span>";
$output .= htmlentities(trim($tmp)) . "\n";
}
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>GIT DEPLOYMENT SCRIPT</title>
</head>
<body style="background-color: #000000; color: #FFFFFF; font-weight: bold; padding: 0 10px;">
<pre>
<?=$output?>
</pre>
</body>
</html>
源代码控制当然不是我的强项,我认为它是必要的邪恶,我假设脚本失败的原因是我们服务器上的 git 要么指向 github 而不是 bitbucket,要么仍在尝试使用一些以前的开发者凭据?
我已更改 git config --global user.name 和 git config --global user.email 来尝试解决这个问题。
任何建议将不胜感激。
【问题讨论】:
-
您是否使用运行 PHP 脚本的同一用户测试 SSH 命令?
-
啊,也许不是!我想脚本正在由 www-data 运行
-
所以我认为您需要为 www-data 用户启用 SSH
-
我认为你可能是对的,我现在会破解它,如果它有效,我会告诉你,如果你发布答案,我会给你rep ofc
标签: git github ssh version-control