ā§Ē.ā§Ē āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ āĻāĻŋāĻ – āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸āĻžāĻāĻĄā§ āĻāĻŋāĻ āĻāĻā§āĻ¸ā§āĻ¸ āĻāĻ° āĻāĻ¨ā§āĻ¯ SSH āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻĻā§āĻāĻŦā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻžāĻ°āĻĻā§āĻ° āĻ āĻĨā§āĻ¨āĻāĻŋāĻā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ authorized_keys āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§ āĨ¤ āĻāĻŽāĻ°āĻž āĻ§āĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ āĻ¯ā§āĻŽāĻ¨ Ubuntu āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°āĻā§āĻ¨āĨ¤
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJICUvax2T9va5 gsg-keypair
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/
# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'Initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'Fix for README file'
$ git push origin master
āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻˇā§ āĻ¨ā§āĻ āĻāĻ°āĻŦā§āĻ¨, āĻāĻāĻ¨ āĻāĻ āĻ¸āĻāĻ˛ āĻāĻŋāĻ āĻāĻāĻāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ āĻ˛āĻāĻŋāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§ āĻāĻŦāĻ āĻļā§āĻ˛ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻ¤āĻžāĻĻā§āĻ°āĻā§ āĻ°ā§āĻ¸āĻā§āĻ°āĻŋāĻā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻžāĻšāĻ˛ā§ āĻļā§āĻ˛ āĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ /etc/passwd āĻĢāĻžāĻāĻ˛ āĻāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻā§āĻŦ āĻ¸āĻšāĻā§āĻ git-shell āĻā§āĻ˛ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŋāĻ āĻāĻāĻāĻžāĻ° āĻĻā§āĻ° āĻā§ āĻ°ā§āĻ¸āĻā§āĻ°āĻŋāĻā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŋāĻ āĻāĻāĻāĻžāĻ° āĻļā§āĻ§ā§ āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŋāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻŋāĻ āĻāĻāĻāĻžāĻ° āĻāĻāĻžāĻāĻ¨ā§āĻ āĻ˛āĻāĻŋāĻ¨ āĻļā§āĻ˛ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°ā§āĻ¨ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ āĻāĻāĻžāĻāĻ¨ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ° āĻ¨āĻ°āĻŽāĻžāĻ˛ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒāĻžāĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ āĻ¸āĻŦ āĻāĻāĻžāĻāĻ¨ā§āĻ āĻ˛āĻāĻŋāĻ¨ āĻāĻ° āĻāĻ¨ā§āĻ¯ git-shell āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ bash āĻ āĻĨāĻŦāĻž csh āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§āĨ¤ āĻāĻāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŋāĻ āĻļā§āĻ˛ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻ¨ āĻĒāĻžāĻĨ āĻāĻ° āĻ¨āĻžāĻŽ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ /etc/shells āĻĢāĻžāĻāĻ˛ āĻ, āĻ¯āĻĻāĻŋ āĻāĻā§ āĻĨā§āĻā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¨āĻž āĻĨāĻžāĻā§āĨ¤
$ cat /etc/shells # see if git-shell is already in there. If not...
$ which git-shell # make sure git-shell is installed on your system.
$ sudo -e /etc/shells # and add the path to git-shell from last command
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻāĻāĻāĻžāĻ° āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻļā§āĻ˛ āĻāĻĄāĻŋāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨Â chsh <username> -s <shell>: āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤
$ sudo chsh git -s $(which git-shell)
āĻāĻāĻ¨ āĻāĻŋāĻ āĻāĻāĻāĻžāĻ° āĻ°āĻž SSH āĻāĻžāĻ¨ā§āĻāĻļāĻ¨ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŋāĻ āĻ°āĻŋāĻĒāĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ pushāĻāĻŦāĻ pull āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ° āĻļā§āĻ˛ āĻāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒāĻžāĻŦā§ āĻ¨āĻžāĨ¤ āĻ¯āĻĻāĻŋ āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻ˛āĻāĻŋāĻ¨ āĻ°āĻŋāĻā§āĻā§āĻ āĻāĻ°āĻ° āĻĻā§āĻāĻžāĻŦā§ āĻāĻ°āĻāĻŽ
$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.
āĻāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžā§ āĻāĻāĻāĻžāĻ° āĻ°āĻž āĻāĻāĻ¨ā§ SSH āĻĒā§āĻ°ā§āĻ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻžāĻ¨ā§ āĻ°ā§āĻ¸āĻā§āĻ°āĻŋāĻā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻžāĻšāĻ˛ā§ authorized_keys āĻĢāĻžāĻāĻ˛ āĻāĻŋ āĻāĻĄāĻŋāĻ āĻāĻ°ā§ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻ āĻāĻŋ āĻāĻ° āĻļā§āĻˇ āĻ āĻ¨āĻŋāĻā§āĻ° āĻ āĻĒāĻļāĻ¨ āĻā§āĻ˛ā§ āĻ¯ā§āĻ āĻāĻ°ā§ āĻĻā§āĻŦā§āĻ¨āĨ¤
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
āĻ°ā§āĻāĻžāĻ˛ā§āĻ āĻāĻž āĻĻā§āĻāĻ¤ā§ āĻāĻ āĻ°āĻāĻŽ āĻšāĻŦā§
$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG...