設置 SSH Key 登錄服務器和 Git 服務器


設置 SSH Key 登錄服務器

通過 ssh 登錄服務器,一直都是用的賬號和密碼,今天看到一篇文章說這樣不安全,使用 ssh key 的方式登錄則是更好的選擇,因此,研究實踐了一下,並記錄在這里。

Ssh key 的基本原理是這樣的:在你的本機上創建兩個Key文件,一個是私鑰,一個是公鑰,私鑰放在本地,公鑰放在遠程服務器。當你通過ssh key登錄到遠程服務器時,遠程服務器使用公鑰創建了一個加密的隨機消息,然后發送到本地機器,本地機器使用私鑰解密消息,發送解密的消息到遠程服務器。遠程服務器驗證這個解密后的消息,然后授權訪問。實際過程比這個復雜,但我們這里理解大概就可以了。

使用下面的命令創建Key文件:

ssh-keygen

按照界面上的提示操作,最終生成了兩個文件:~/.ssh/id_rsa.pub(公鑰) 和 ~/.ssh/id_rsa(私鑰)。私鑰文件放在本地機器,並且要保密,不能讓別人知道。公鑰要復制一份放到遠程服務器上面。

我們使用scp命令來復制公鑰文件到服務器:

scp ~/.ssh/id_rsa.pub <your username>@<your servername/ip>:

'''注意:末尾有一個:冒號!'''這個命令把公鑰文件上傳到了服務器 /home 目錄下面。

下一步,使用該用戶名登錄服務器,檢查 ~/.ssh 目錄是否存在,不存在則創建之:
mkdir ~/.ssh

下一步,創建 ~/.ssh/authorized_keys 文件:

touch ~/.ssh/autorized_keys

這個文件將包含一系列允許登錄本機的公鑰。

然后將公鑰的內容加到 ~/.ssh/authorized_keys 文件中:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

最后,我們修改相關目錄的權限,只允許 (假設此處用戶名為 feiffy) 用戶訪問。

chown -R feiffy:feiffy ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

大功告成,現在可以直接 ssh 登錄遠程服務器,而不需要輸入密碼了。

另外,使用 scp 命令傳輸文件到遠程服務器也不需要密碼了。

設置 SSH Key 登錄 Git 服務器

有了上面的操作基礎之后,就會發現,設置 SSH Key 登錄 Git 服務器其實原理是一樣。

這里先講我個人的 Git 遠程庫的設置,這與 Github 有所不同。

我自己的遠程服務器上面的 Git 倉庫是用 git init --bare 命令建立的,是這樣建立的:

# 登錄遠程服務器
cd /home/git
mkdir repo.git
cd repo.git
git init --bare

可以看到我使用的是 Git 用戶創建的遠程倉庫,在本機上克隆該倉庫只需運行下列命令即可

git clone git@example.com/repo.git

然后需要輸入Git用戶的密碼。現在的目的是設置使用 ssh key 登錄,而不需要輸入密碼。

既然原理與上一篇中的一樣,那就不贅述了,為了方便這里直接使用上面生成的兩個Key文件:id_rsa,id_rsa.pub,把公鑰id_rsa.pub復制到遠程服務器的 /home/git/ 目錄下面,注意與上文的區別只是不同用戶名的區別,其他操作都是一樣的。

然后本地連接使用下面的命令,就不需要密碼了。

git clone ssh://git@example.com/home/git/repo.git

PS - 個人博客原文:設置 SSH Key 登錄服務器和 Git 服務器

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM