Construir o seu próprio servidor git no Ubuntu e CentOS

Use o repositório remoto Github, projeto público Github é livre, mas se você não quer que os outros para ver o seu projecto terá de ser carregada. Eu não quero pagar, então precisamos construir seu próprio servidor Git como um entreposto privado.


  • servidor Git criado ao abrigo do Ubuntu

  1. Ver versão git, Ubuntu e centos gerais de instalação do sistema será instalado automaticamente
 $ git --version  
git version 1.7.1 
  1. Se não, use apt-get instalar instalação git o comando sudo
 $ sudo apt-get install git
  1. O nosso melhor para configurar um usuário git dedicada e definir uma senha, um gerenciamento de código especial e git gerenciamento de serviços
  sudo useradd -m git  
 sudo passwd git(change to yours)  

Nota: O comando acima gera um nome de usuário e senha são ambos conta git, você também pode definir sua senha, deve primeiro configurar, caso contrário, haverá problemas mais tarde, (se não houver senha, não ssh-chave quando se não pode ser verificada, você não pode clone) também pode criar o seu próprio nome de usuário, enquanto outras operações relacionados (como clone, empurrar, puxar) para especificar quando o nome de usuário para (este artigo tudo para git, por exemplo), - opção m é permitido em casa gerar diretório pasta pessoal do usuário, o nosso repositório de código serão organizados na pasta principal.

  1. Em seguida, crie uma pasta de repositórios git como novo repositório git no diretório home do usuário, e estão equipados com a segurança mais básica para o armazém - controle de acesso
  sudo mkdir /home/git/repositories # 最好使用repositories作为文件夹名称,这样可以简化后面的操作  
sudo chown git:git /home/git/repositories  
sudo chmod 755 /home/git/repositories  
  1. Assim, um servidor git simples já estar no lugar, você pode criar-se um projeto de teste simples. Para facilitar na sequência de operações, nós mudar para o primeiro git usuário
  su git
  1. Em respositories um novo helloworld diretório (armazém), e mude para o diretório, onde inicializar o armazém vazio
 mkdir helloworld  
cd helloworld 
git --bare init  

Note-se aqui ao lado , nós inicializar o armazém, o melhor uso git -bare Init
este comando pode salvar um monte de problemas, mas não use: o init git sobre a diferença entre esses dois comandos eu olhar para outro blog : http://blog.csdn.net/qq_29232943/article/details/60971061

Se você usar a inicialização de inicialização git, o diretório também inclui uma árvore de trabalho remota repositório.
Quando o impulso repositório local para um repositório remoto, se o repositório remoto é empurrar um ramo (se não, então empurrar o ramo, não há nenhum problema), então o resultado não vai empurrar a reação na árvore de trabalho, diretório ou seja, em um repositório remoto sob o arquivo correspondente ou conteúdo anterior.
Solução: o servidor deve executar o comando: git reset -Hard para ver o conteúdo do empurrão.

Problema 2
Git: o mestre solução push errado -> master (ramo é atualmente check-out)

Isso ocorre porque as necessidades de operação padrão rejeição git push to ser definido, modificar o servidor .git / config adicione o seguinte código:

[receive]
denyCurrentBranch = ignore

ok, um estabelecimento armazém vazio de bom, máquina de git com outro instalado (como as janelas máquina de desenvolvimento) de teste, para ver seu idiota endereço IP do servidor através do comando ifconfig -a, para distinguir o seu endereço de IP, o servidor marcou uma rede com fio, o endereço IP para a eth0 da Inter, se a rede sem fio é o endereço inet wlan0, servidor IP é assumido aqui que você usou acima é 192.168.8.34

 $ git clone git@192.168.8.34:/home/git/repositories/helloworld
Cloning into 'helloworld'...
The authenticity of host '192.168.8.34 (192.168.8.34)' can't be established.
RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.34' (RSA) to the list of known hosts.
[email protected]'s password:  

Descrição: Aqui estão duas coisas a serem observados:
Primeiro , quando você usar o clone comandos Git ou conexão impulso GitHub, receberá um aviso:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

Isso ocorre porque o Git usa a conexão SSH, e quando a primeira conexão SSH verificação do servidor Key GitHub, você precisa confirmar se as informações de impressão digital da chave GitHub GitHub realmente a partir do servidor (ou seja, o seu ssh-chave, a chave pública para carregamento para o servidor, a chave privada localmente, quando o primeiro clone para verificar esta informação, após verificação bem sucedida, irá gerar um arquivo known_hosts, que é suas informações de conexão, o futuro não verificado), digite sim pressione enter . Git irá mostrar um aviso, dizendo que você tem que adicionar GitHub é chave para uma lista confiável desta máquina no:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

Este aviso não aparece apenas uma vez, a última operação não terá qualquer aviso.
Se você está realmente preocupado com as pessoas que se apresentam como servidor GitHub, antes de entrar controle sim consistente de informações de impressão digital GitHub RSA Key é dada em conexão com o SSH.

Em segundo lugar , este solicita que você digite uma senha para clone, é claro, se você souber a senha, você pode digitar uma senha para clone, mas uma maneira mais comum é a chave pública SSH uso para completar a verificação.


Alguns teste operacional básico em uma máquina de desenvolvimento: para este projeto adicionar alguns arquivos, em seguida, cometeu, em seguida, empurre, se, além de senha vários entrada do usuário git, todos os outros normal, em seguida, explicar a instalação e configuração acima têm sido um sucesso .

No teste acima, não é encontrada no clone de um longo caminho, é fácil de erro? Vários passos são necessários para inserir a senha git do usuário (clone, push), não é chato , mas de acordo com o ritmo de desenvolvimento para cada membro adicional, você tem que dizer a ele a senha do usuário git não é pesado e inseguro?
Então, se você pode clonar um determinado momento, desde que o nome do projeto, clone / push / autenticação automatizar tração, e é melhor para dar usuários diferentes permissões diferentes para diferentes armazéns, tanto melhor! A seguinte configuração pode lidar com tudo isso, vamos gerenciamento de repositório git mais fácil, mais conveniente!

Primeiro, a autenticação de troca de dados git problema, já mencionado e operação são baseados em ssh, então naturalmente nós autenticação pode ser resolvido por meio da configuração ssh . autenticação ssh é gerido por chave, que inclui uma chave pública (para o servidor) e uma chave privada (próprio de retenção), cada um correspondendo à chave pública de uma chave privada, apenas a chave privada correspondente a cada um de uma chave pública. . . . Algumas palavras serão omitidas aqui. . . . Assim, uma maneira simples de resolver a autenticação é automática: cada pessoa precisa de acesso ao repositório de código, gerar seu próprio público e chaves privadas via, a chave pública para o servidor, o administrador do servidor em sua máquina keygen-ssh Adicionar a chave pública do usuário ao servidor para mudar git .ssh / authorized_keys arquivo do usuário

Instalar o Service openssh


Comando para instalar o servidor SSH

sudo apt-get install openssh-server

Por comando, consulte serviço SSH é iniciado.

ps –e|grep ssh

Iniciando o serviço SSH.
Digite o comando: reiniciar o serviço SSH
reinicialização do serviço sshd sshd serviço não reconhecido

ssh service 在ubantu叫 ssh  
所以重启ssh  
sudo service ssh restart  

É em centos sshd

service sshd restart 

Comando: service sshd start para iniciar o serviço | comando: service sshd parada para parar o serviço
ao iniciar o sistema digite: -antp netstat | grep sshd começar a ver se 22-port (pode ser omitido).
Como configurar o serviço de SSH para arrancar?
◆ digite o comando: sshd chkconfig para.
Nota: Se o chkconfig sshd off é de inicialização SSH proibida.

- criar um quadro / .ssh, e para definir as permissões apropriadas. Isto é importante se a permissão for muito aberto a fazer-se protegido por SSH não faz sentido.

$ su - git
$ mkdir .ssh && chmod 700 .ssh 
$ touch .ssh/authorized_keys 
$ chmod 600 .ssh/authorized_keys 

authorized_keys arquivo contém todos os seus desenvolvedores de chave pública SSH, você pode abrir permissões permitir-lhes trabalhar em seu projeto Git. Eles têm que criar o seu próprio par de chaves SSH e sua chave pública para você. Copie a chave pública para o arquivo authorized_keys no gituser usuário

Crie seus próprios clientes no SSH Key locais

Em primeiro lugar, no diretório home do usuário para ver se há diretório .ssh, se houver, e depois ver se há id_rsa e id_rsa.pub esses dois arquivos nesse diretório, se você já tem, você pode ir diretamente para a próxima etapa. Se não, abra o Shell (aberta Git Bash no Windows)
criar um usuário local git configure

$ git config --global user.name "username"
$ git config --global user.email "[email protected]"
$ ssh-keygen -t rsa -C "[email protected]"  

Você precisa endereços de e-mail em seu próprio endereço de e-mail, em seguida, todo o caminho, usar o valor padrão, por causa desta chave não é utilizado para fins militares, por isso não há necessidade de definir uma senha.
Se tudo correr bem, pode ser encontrada no diretório .ssh diretório home do usuário, há dois arquivo id_rsa e id_rsa.pub, tanto SSH Key é par chave secreta, id_rsa chave privada, não pode vazar, id_rsa.pub é a chave pública, pode dizer com segurança ninguém.
Descrição : Ver o git todos os itens de configuração

$ git config -l  

servidor Git abre autenticação RSA
e então você pode ir para adicionar sua chave pública para verificar as informações sobre o servidor Git. Primeiro necessidade de / etc / ssh / sshd_config vai abrir no servidor de autenticação RSA Git, a saber:

sudo vim /etc/ssh/sshd_config
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys

Basta copiar a chave pública gerada em, haverá um membro para participar, estar em authorized_keys em adicional, acrescentou , em seguida, clone novamente quando ou após o impulso quando você não precisa digitar a senha:

Zhu@XXX/E/testgit/8.34
$ git clone git@192.168.8.34:/home/git/repositories/helloworld
Cloning into 'helloworld'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

shell de login do usuário Desativar git
por razões de segurança, o segundo passo é criar um usuário git não é permitido fazer logon shell, o que pode ser feito editando o arquivo / etc / passwd. Encontrar uma linha como a seguinte:

sudo vim /etc/passwd
git:x:1001:1001:,,,:/home/git:/bin/bash  

Finalmente, depois de um cólon leia-se:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell  

Desta forma, os usuários git pode utilizar normalmente através git ssh, mas você não pode fazer o login shell, porque nós especificado para o git git-desembolsar cada vez que um login de usuário automaticamente saída.

Gestão e autoridade pública
se a equipe é pequena, coloque todos em arquivo de chave pública /home/git/.ssh/authorized_keys coletadas do servidor é viável. Se a equipe tem várias centenas de pessoas, por isso não seria capaz de jogar, então você pode usar para gerenciar direitos públicos e gitlab, gitlab Github semelhante


Instalar servidor git sob centos


Note que o comando no Ubuntu e diferenças semelhantes
yum install git
versão git update sob CentOS http://www.cnblogs.com/boxuan/articles/6434109.html


Graças aos seguintes links Ajuda
Referência: http://freeloda.blog.51cto.com/2033581/1410562
Referência: http://blog.csdn.net/xsl1990/article/details/25486211
Referência: HTTP: //blog.csdn .net / wave_1102 do artigo / / detalhes / 47779401

Publicado 175 artigos originais · ganhou elogios 76 · Exibições 230.000 +

Acho que você gosta

Origin blog.csdn.net/qq_29232943/article/details/56835554
Recomendado
Clasificación