All Projects → c9s → Gitorbit

c9s / Gitorbit

GitHub-like Git Server, let you control the permission via mongodb or LDAP

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Gitorbit

Shellhub
💻 ShellHub enables teams to easily access any Linux device behind firewall and NAT.
Stars: ✭ 686 (+4187.5%)
Mutual labels:  ssh
Ansible Ssh Hardening
This Ansible role provides numerous security-related ssh configurations, providing all-round base protection.
Stars: ✭ 746 (+4562.5%)
Mutual labels:  ssh
Winscp
WinSCP is a popular free SFTP and FTP client for Windows, a powerful file manager that will improve your productivity. It supports also Amazon S3, FTPS, SCP and WebDAV protocols. Power users can automate WinSCP using .NET assembly.
Stars: ✭ 794 (+4862.5%)
Mutual labels:  ssh
Python Proxy
HTTP/HTTP2/HTTP3/Socks4/Socks5/Shadowsocks/ShadowsocksR/SSH/Redirect/Pf TCP/UDP asynchronous tunnel proxy implemented in Python 3 asyncio.
Stars: ✭ 692 (+4225%)
Mutual labels:  ssh
Goph
🤘 The native golang ssh client to execute your commands over ssh connection. 🚀🚀
Stars: ✭ 734 (+4487.5%)
Mutual labels:  ssh
Parallec
Fast Parallel Async HTTP/SSH/TCP/UDP/Ping Client Java Library. Aggregate 100,000 APIs & send anywhere in 20 lines of code. Ping/HTTP Calls 8000 servers in 12 seconds. (Akka) www.parallec.io
Stars: ✭ 777 (+4756.25%)
Mutual labels:  ssh
Scaleway Cli
Command Line Interface for Scaleway
Stars: ✭ 654 (+3987.5%)
Mutual labels:  ssh
The Bastion
Authentication, authorization, traceability and auditability for SSH accesses.
Stars: ✭ 833 (+5106.25%)
Mutual labels:  ssh
Libssh2
the SSH library
Stars: ✭ 743 (+4543.75%)
Mutual labels:  ssh
Aws Ec2 Ssh
Manage AWS EC2 SSH access with IAM
Stars: ✭ 796 (+4875%)
Mutual labels:  ssh
Vssh
Go Library to Execute Commands Over SSH at Scale
Stars: ✭ 707 (+4318.75%)
Mutual labels:  ssh
Teleport
Teleport是一款简单易用的堡垒机系统。
Stars: ✭ 718 (+4387.5%)
Mutual labels:  ssh
Opscloud
运维管理平台(阿里云),自动同步阿里云配置信息,堡垒机(容器),批量运维,Kubernetes,Zabbix管理等功能
Stars: ✭ 788 (+4825%)
Mutual labels:  ssh
Emagnet
Automated hacking tool that will find leaked databases with 97.1% accurate to grab mail + password together from recent uploads from https://pastebin.com. Bruteforce support for spotify accounts, instagram accounts, ssh servers, microsoft rdp clients and gmail accounts
Stars: ✭ 688 (+4200%)
Mutual labels:  ssh
Sshtunnel
SSH tunnels to remote server.
Stars: ✭ 797 (+4881.25%)
Mutual labels:  ssh
Yubikey Guide
Guide to using YubiKey for GPG and SSH
Stars: ✭ 6,709 (+41831.25%)
Mutual labels:  ssh
Sshttp
SSH/HTTP(S) multiplexer. Run a webserver and a sshd on the same port w/o changes.
Stars: ✭ 766 (+4687.5%)
Mutual labels:  ssh
Ssb
Secure Shell Bruteforcer — A faster & simpler way to bruteforce SSH server
Stars: ✭ 832 (+5100%)
Mutual labels:  ssh
Totp Ssh Fluxer
Take security by obscurity to the next level (this is a bad idea, don't really use this please)
Stars: ✭ 811 (+4968.75%)
Mutual labels:  ssh
Kitty
💻 KiTTY, a free telnet/ssh client for Windows
Stars: ✭ 791 (+4843.75%)
Mutual labels:  ssh

GitOrbit

WORKING IN PRRGRESS

Features

  • MongoDB-based ssh public key authentication.

  • Multiple ssh public key support for each user.

  • Kubernetes deployment support.

  • Support permission customization.

  • LDAP support (WIP)

  • Default Permission Configuration (WIP)

Install

Setup with Docker

By default, the git-server image includes a config file:

{
    "mongo": {
        "url": "mongodb://mongo:27017/git"
    },
    "logger": {
        "dir": "/var/log/git",
        "level": "debug",
        "maxAge": "720h",
        "suffixPattern": ".%Y%m%d",
        "linkName": "access_log"
    }
}

Which uses mongodb://mongo:27017/git as the connection string for the mongo client.

And so you will need to create a mongodb container instance with the name mongo, so that the client can connect to your mongodb server.

First, you need to create a network for sharing the mongodb network connection:

docker network create docker

Start the mongodb server with the network that we just created:

docker run --name mongo \
    --restart=always \
    --publish 27018:27017 \
    --network docker \
    --detach mongo

Get your public key footprint and the key:

SSH_PUBKEY=$(cat ~/.ssh/id_rsa.pub)
SSH_PUBKEY_FINGERPRINT=$(ssh-keygen -lf ~/.ssh/id_rsa.pub | awk '{ print $2 }')
GIT_USER_EMAIL=$(git config user.email)

Insert the user in the mongodb:

mongo mongodb://localhost:27018/git --eval "
    db.users.insert({
        email: \"$GIT_USER_EMAIL\",
        keys: [{
                \"name\": \"dev\",
                \"fingerprint\": \"$SSH_PUBKEY_FINGERPRINT\",
                \"key\": \"$SSH_PUBKEY\"
            }]
    })"

Ensure that you can find the user by the fingerprint:

mongo mongodb://localhost:27018/git --eval "db.users.find({
    \"keys.fingerprint\": \"$SSH_PUBKEY_FINGERPRINT\" }).pretty()"

Build and Run the git server:

make stop build run

Add an entry in your .ssh/config:

Host git-server
    HostName localhost
    User git
    Port 2022
    LogLevel INFO
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

Now you can try git clone:

git clone [email protected]:test.git

Kubernetes

Copy the config from the template:

cp -v config/default.json k8s.json

Configure your settings:

vim k8s.json

Create configmap object in your cluster:

kubectl create configmap git-server-config --from-file=authorized_keys.json=k8s.json

To be continued.

License

MIT License

Author

Yo-An Lin [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].