使用sshkey,可以實現免密碼登陸服務器,同時關閉ssh service的使用賬號密碼登陸功能即可
1、首先在客戶機添加sshkey(如果是window系統的話需要安裝shell終端工具,例如xshell,gitbash等)
ssh-keygen -t rsa -C 'email@sample.com'
#之后會在用戶目錄下生成一個.ssh目錄,里面有“id_rsa”私鑰(之前的命令生成的rsa算法加密的key)、“id_rsa.pub”公鑰,私鑰保存在客戶端,公鑰保存到服務端即可
2、在服務端的對應用戶目錄下的.ssh/authorized_keys文件下添加客戶端的公鑰,每行一個即可。如果authorized_keys原來不存在,新建該文件將拷貝內容放入即可(或者在其他用戶的.ssh目錄下看看有沒有)
3、修改服務端對應用戶的相應文件的權限:(改成一致即可,盡量不要多也不要少)
$ls -la /home/username
drwx--x--x 9 username username 4096 May 11 10:09 username
$ls -la /home/username/.ssh
-rw-r--r-- 1 username username 797 May 11 10:09 authorized_keys
$ls -la /home/username
drwx------ 2 username username 4096 May 11 10:09 .ssh
4、關閉ssh server的使用賬號密碼登陸功能
修改/etc/ssh/sshd_conf文件,將PasswordAuthentication修改為no
5、重啟ssh service
sudo service ssh restart
git庫的搭建,以上所做的一切都是為了服務於下面的操作
1、首先,生成一個git倉庫
$ sudo git init --bare test.git
Initialized empty Git repository in /home/username/test.git/ #提示初始化了一個空的git倉庫
$ ls test.git
branches config description HEAD hooks info objects refs #該目錄下的內容
$ sudo chown -R username:username test.git #修改該目錄的owner和group為username
2、禁用該用戶的shell登陸(前提是這個用戶創建就是為了git,不對系統進行登陸)
修改/etc/passwd
username:x:1001:1001:,,,:/home/username:/bin/bash
改為:
username:x:1001:1001:,,,:/home/username:/usr/bin/git-shell
3、正常使用git
$ git clone username@server:/home/username/sample.git