在使用github、gitlab、coding等代碼托管工具時嗜侮,本地倉庫和遠端倉庫的同步,需要通過ssh密鑰的方式來獲得權限操作啥容,可以理解為為我們的pc配發(fā)一把鑰匙锈颗,用于打開遠端倉庫的通道,這把鑰匙就是我們的ssh key咪惠。
一击吱、什么是ssh
1、SSH 的結構
SSH是由客戶端和服務端的軟件組成的遥昧,有兩個不兼容的版本分別是:1.x和2.x覆醇。 用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x渠鸽。
服務端是一個守護進程(daemon)叫乌,他在后臺運行并響應來自客戶端的連接請求柴罐。服務端一般是sshd進程徽缚,提供了對遠程連接的處理,一般包括公共密鑰認證革屠、密鑰交換凿试、對稱密鑰加密和非安全連接。
客戶端包含ssh程序以及像scp(遠程拷貝)似芝、slogin(遠程登陸)那婉、sftp(安全文件傳輸)等其他的應用程序。
他們的工作機制大致是本地的客戶端發(fā)送一個連接請求到遠程的服務端党瓮,服務端檢查申請的包和IP地址再發(fā)送密鑰給SSH的客戶端详炬,本地再將密鑰發(fā)回給服務端,自此連接建立寞奸。SSH 1.x和SSH 2.x在連接協(xié)議上有一些差異呛谜。
一旦建立一個安全傳輸層連接在跳,客戶機就發(fā)送一個服務請求。當用戶認證完成之后隐岛,會發(fā)送第二個服務請求猫妙。這樣就允許新定義的協(xié)議可以與上述協(xié)議共存。連接協(xié)議提供了用途廣泛的各種通道聚凹,有標準的方法用于建立安全交互式會話外殼和轉發(fā)(“隧道技術”)專有 TCP/IP 端口和 X11 連接割坠。
SSH被設計成為工作于自己的基礎之上而不利用超級服務器(inetd),雖然可以通過inetd上的tcpd來運行SSH進程妒牙,但是這完全沒有必要彼哼。啟動SSH服務器后,sshd運行起來并在默認的22端口進行監(jiān)聽(你可以用 # ps -waux | grep sshd 來查看sshd是否已經(jīng)被正確的運行了)如果不是通過inetd啟動的SSH单旁,那么SSH就將一直等待連接請求沪羔。當請求到來的時候SSH守護進程會產(chǎn)生一個子進程,該子進程進行這次的連接處理象浑。
2蔫饰、SSH 的啟動與停止
首先確保ssh服務已經(jīng)安裝
檢查服務是否已經(jīng)啟動
ps -e | grep sshd
啟動、停止愉豺、重啟服務
service sshd start 開啟ssh服務
service sshd stop 停止ssh服務
service sshd restart 重啟ssh服務
或者使用帶有路徑的腳本:
/etc/init.d/sshd start
/etc/init.d/sshd stop
/etc/init.d/restart
配置ssh-server篓吁,配置文件位于/etc/ssh/sshd_config,默認端口為22蚪拦,為了安全杖剪,一般自定義為其他端口,然后重啟
二驰贷、ssh key的生成和使用方法
1盛嘿、檢查是否已經(jīng)存在ssh key
cd ~/.ssh
通常sshkey會默認生成在用戶家目錄下,所以查看目錄下是否存在.ssh 文件夾括袒,以及是否存在相關目錄就行次兆。(~/.ssh/id_rsa)
2.生存密鑰:
$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com”
-t 的意思是選擇kye的type。分別有 RSA 和 DSA 兩種锹锰。
按3個回車芥炭,密碼為空。
終端生成:ssh-keygen
打開:vim ~/.ssh/id_rsa_.pub
最后得到了兩個文件:id_rsa和id_rsa.pub
3.在github上添加ssh密鑰恃慧,這要添加的是“id_rsa.pub”里面的公鑰园蝠。
github https模式需要登錄。
克隆遠端庫到本地時痢士,使用ssh 地址彪薛,否則會提示沒有權限
建議使用ssh模式吧,配置一下公鑰應該不會出現(xiàn)無權限而且不用輸賬號密碼
4.添加密鑰到ssh:ssh-add 文件名
$ ssh-add ~/.ssh/id_rsa
需要之前輸入密碼。
5.在github上添加ssh密鑰善延,這要添加的是“id_rsa.pub”里面的公鑰训唱。
打開https://github.com/,登陸挚冤,然后添加ssh况增。
6.測試:ssh git@github.com
The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts.
ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell access
Connection to github.com closed.