add minimal git server blog
This commit is contained in:
		
							parent
							
								
									60653dcdd8
								
							
						
					
					
						commit
						0ba0d1197f
					
				
							
								
								
									
										62
									
								
								blogs/git/git-server.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								blogs/git/git-server.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					# create a git user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on debian, `sudo adduser git`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch to git user with `sudo su -l git`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create a `.ssh` dir in the git user's home dir and make it only accessible by the git user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					mkdir ~/.ssh
 | 
				
			||||||
 | 
					chmod 700 ~/.ssh
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create an `authorized_keys` file in the `.ssh` folder, and make it accessible only by the git user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					touch .ssh/authorized_keys
 | 
				
			||||||
 | 
					chmod 600 `.ssh/authorized_keys`
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create a private/public key pair locally to authenticate a user on a machine to connect to the remote server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					ssh-keygen -t rsa
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and finally copy it into the (remote) git user's `.ssh/authorized_keys`, for example using `ssh-copy-id` or giving the public key to the server administrator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# creating bare git repositories
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create directories within git's home dir (nested paths are allowed) with the `.git` extension, for example `my-projects/my-repo.git` or just `my-repo.git`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					git init --bare repo.git
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					there now exists an empty git repository on the server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					the remote can now be added to a local repository
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					git remote add origin git@server:my-repo.git
 | 
				
			||||||
 | 
					git push -u origin main
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# connecting using the key
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add an entry to your local `.ssh/config`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Host myhost
 | 
				
			||||||
 | 
					    HostName        example.com
 | 
				
			||||||
 | 
					    User            git
 | 
				
			||||||
 | 
					    IdentityFile    ~/.ssh/id_rsa
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and connect with
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					ssh myhost
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user