文章導入
我們本來在使用http/https愉快的拉取代碼玩耍,但是突然你的Leader告訴你,我們需要使用SSH協(xié)議進行Git遠程倉庫的交互!?。。『苊悦?,怎么辦,沒做過,為什么要使用SSH,不知道怎么做!此文章誕生,保姆級教程。
環(huán)境:win11、git version 2.41.0.windows.1
一、怎么生成SSH密鑰
1、進入你的ssh配置文件夾,地址eg: C:\Users\張三\.ssh
2、在地址欄輸入CMD打開此位置的小黑窗
3、打開帶此地址的小窗后,輸入ssh-keygen -t rsa -b 4096 -C "huweiwei@xxxx.com"
?。。。。。。?!各參數(shù)意思解釋看最后!?。。。。。?!
會提示:
C:\Users\13735\.ssh>ssh-keygen -t rsa -b 4096 -C "huweiwei@xxxx.com"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\13735/.ssh/id_rsa):
此時光標閃爍,需要我們輸入要生成的密鑰的文件名稱,我輸入gitlab_key
會提示:
C:\Users\13735\.ssh>ssh-keygen -t rsa -b 4096 -C "huweiwei@xxxx.com"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\13735/.ssh/id_rsa): gitlab_key
Enter passphrase (empty for no passphrase):
此時光標閃爍,需要我們輸入密碼,此密碼即為我們每次操作git的時候需要輸入的密碼,相當于進門的鑰匙,是我們自己使用的,可以防止可愛的同事拿你的電腦提交可愛的代碼~~~
我輸入密碼123456
,會再次提示請輸入密碼,再次輸入即可,兩次不一致也會給出提示。輸入完兩次密碼如下即密鑰生成成功:
C:\Users\13735\.ssh>ssh-keygen -t rsa -b 4096 -C "huweiwei@xxxx.com"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\13735/.ssh/id_rsa): gitlab_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitlab_key
Your public key has been saved in gitlab_key.pub
The key fingerprint is:
SHA256:oWWRRWeV03SYb17D7wl//iJSwbSfvq0ibA8HlhP2AoI huweiwei@xxxx.com
The key's randomart image is:
+---[RSA 4096]----+
| .+o o..*o|
| . .. o. = o|
| E . = oo ..o |
| = + ++ o+|
| . S * .o ++|
| . +..o o|
| .....o..|
| =oo o+o|
| . +.oo=*|
+----[SHA256]-----+
然后去我們的ssh的文件夾里去看,果然生成了我們輸入的名字的密鑰,如圖:
二、怎么配置到gitlab上
現(xiàn)在密鑰有了,我們就可以配置到gitlab上啦,剛才生成的兩個文件,用記事本打開.pub
的那個文件,然后復制里面的內(nèi)容,打開gitlab的主頁,然后添加Key,如圖:
至此所有的配置流程就完成了~
三、進行Clone
好了 簡簡單單就配置好啦~現(xiàn)在可以拉倉庫了,當然是用SSH去拉,命令:git clone ssh://git@192.168.127.108:5548/project/wechat.git
然后不出意外的話就會出意外,如果出意外,請看下節(jié)!
四、可能遇見的問題
1、完成了上述流程之后還是拉不下來,提示 Permission denied (publickey)
解決:刪除ssh文件夾下所有文件,重新生成、重新配置、重新拉取,ok
2、三個重新之后還是 Permission denied (publickey)
,請再重新生成(這里需要注意:生成的時候提示Enter file in which to save the key (C:\Users\13735/.ssh/id_rsa):
不要設置文件名,不設置會采用默認的,我發(fā)現(xiàn)自己設置文件名會造成系統(tǒng)識別不了,導致校驗失敗),重新配置,重新拉取,這次肯定ok,還不行請留言~
3、如果在生成密鑰的時候輸入了密碼,會提示讓輸入密碼,我們之前輸入的是123456,輸入即可
五、SSH和HTTPS方式特點說明,為什么要使用SSH
很明顯,兩種拉取方式使用的協(xié)議不同,有興趣可以研究SSH協(xié)議、HTTP協(xié)議;而HTTPS協(xié)議其實是HTTP+SSL。具體:
ssh:
(1)默認端口22
(2)驗證方式是本地生成ssh密鑰,上傳到服務器;
(3)不用反復輸入密碼
一般線上服務器不會默認開通22端口,所以ssh適合內(nèi)部項目開發(fā)使用,配置相對繁瑣,新手不友好。
http/https:
(1)默認端口80、443
(2)驗證方式方式是通過用戶名和密碼
一般線上服務器都是開發(fā)80端口和443端口的,可以無感遠程操作,適合做一些開源項目和內(nèi)部項目。輸入賬號密碼即可,新手相對友好,現(xiàn)在很多密碼持久保存策略,也都可以實現(xiàn)不用每次都輸入密碼。
六、生成SSH密鑰時各參數(shù)解釋
ssh各參數(shù)系統(tǒng)解釋如下:
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
ssh-keygen各參數(shù)系統(tǒng)解釋如下:文章來源:http://www.zghlxwxcb.cn/news/detail-654899.html
usage: ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile]
[-m format] [-N new_passphrase] [-O option]
[-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
[-w provider] [-Z cipher]
ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase]
[-P old_passphrase] [-Z cipher]
ssh-keygen -i [-f input_keyfile] [-m key_format]
ssh-keygen -e [-f input_keyfile] [-m key_format]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-lv] [-f known_hosts_file]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -K [-a rounds] [-w provider]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-g] [-f input_keyfile]
ssh-keygen -M generate [-O option] output_file
ssh-keygen -M screen [-f input_file] [-O option] output_file
ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
[-n principals] [-O option] [-V validity_interval]
[-z serial_number] file ...
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A [-a rounds] [-f prefix_path]
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
file ...
ssh-keygen -Q [-l] -f krl_file [file ...]
ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
ssh-keygen -Y check-novalidate -n namespace -s signature_file
ssh-keygen -Y sign -f key_file -n namespace file ...
ssh-keygen -Y verify -f allowed_signers_file -I signer_identity
-n namespace -s signature_file [-r revocation_file]
前面使用的生成SSH密鑰的命令:ssh-keygen -t rsa -b 4096 -C "huweiwei@xxxx.com"
-t 就是生成策略了,策略有這些: dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
我們使用rsa策略
-b 是指定密鑰長度。對于RSA密鑰,最小要求768位,默認是2048位。DSA密鑰必須恰好是1024位(FIPS 186-2 標準的要求)
-C 是comment,注釋文字,我們寫的是郵箱文章來源地址http://www.zghlxwxcb.cn/news/detail-654899.html
到了這里,關于Git怎么使用SSH從GitLab上拉取代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!