ssh免密码登录全过程
生成公鑰和私鑰
ssh-keygen等同于ssh-keygen -t rsa
運行上面的命令后,系統會出現一系列提示,可以一路回車,例如:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/glowd/.ssh/id_rsa): Enter特別說明,要不要對私鑰設置口令(passphrase),如果擔心私鑰的安全,可以設置一個。沒有特殊需求直接Enter,為空
運行結束以后, 默認在 ~/.ssh目錄生成兩個文件:
id_rsa :私鑰
id_rsa.pub :公鑰
2.導入公鑰到認證文件,更改權限
導入本機
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys導入要免密碼登錄的服務器
首先將公鑰復制到遠端服務器,用戶為glowd
scp {-P port} ~/.ssh/id_rsa.pub glowd@host:~在服務器上
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys在服務器上更改權限(必須)
chmod 755 ~chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
以上執行之后,有些機器應該可以直接訪問了,可以測試一下
ssh {remote ip}
3.常見問題及解決方案
- 生成密鑰并上傳至遠程主機后,任然不可用
打開服務器的 /etc/ssh/sshd_config 這個文件,取消注釋。
- 重啟服務器的ssh服務。
- 執行ssh-copy-id 命令
- ssh連接遠程主機時,出現 sign_and_send_pubkey: signing failed: agent refused operation 錯誤,并且還是需要輸入密碼
表示ssh-agent 已經在運行了,但是找不到附加的任何keys,就是說你生成的key,沒有附加到ssh-agent上,需要附加一下,執行
- 查看hosts中是否配置了git服務器的地址,那樣的話,會一直讓你輸入密碼
- 結果就可以了
- 如果顯示下面的錯誤
說明你連接的那一行訪問,驗證已經改變,/home/glowd/.ssh/known_hosts:1,刪除那一行,或者直接把整個known_hosts文件刪除,重新連接一次就好了
4.前面搞定了免密碼登錄,想想也是很激動了。但是,還要寫ip,還要寫用戶名,是不是又有點不爽啦。搞定用戶名和端口號
找到 ~/.ssh/config 文件,如果木有的話就自個兒建一個吧,內容如下:
Host {remote ip} User {username} Port {port}- 現在連接就很簡單了
ssh {remote ip}
5.我現在已經可以ssh 到某臺機器,并且不用輸入用戶名,密碼了。但是我現在要使用github,或者github,怎么辦了。
看網上有些人說,不同的賬號,要生成不同的公匙,私匙,也是有解決方案的
假設github,我的賬號是 glowd@gmail.com
現在我們去/home/glowd/.ssh/目錄下,發現多了兩個文件id_rsa_github和id_rsa_github.pub
但是此時如果你把id_rsa_github.pub的內容,拷貝到github的ssh key里面去,然后連接github
ssh -T git@github.com會發現結果是
Permission denied (publickey).
那是因為現在ssh還不能識別這個密匙-key
想要識別這個key也很簡單
ssh-add /home/glowd/.ssh/id_rsa_github `如果你想查看現在有那些key可以識別` ssh-add -l現在有你的key了,執行
ssh -T git@github.com會顯示你成功通過驗證了并且登錄,但是GitHub沒有提供shell訪問,意思不能使用登錄后的命令行操作github
Hi Glowdable! You've successfully authenticated, but GitHub does not provide shell access.
- 現在好了,我有兩個key,一個ssh 服務器,一個github。但是我們公司也有gitlab,那么我還要再生成一個key,用gitlab的賬號嗎?
當然如果你愿意是沒有問題,而且網上很多同學也是這樣說的,但是這是沒有道理的。
- 首先,我們生成的key,并不和賬號綁定,雖然我們看到,生成key時好像使用了賬號,其實那不是賬號,那只是comment-注釋。就是說,無論你寫什么,都不會對生成的key產生影響
- 那么,我們看到最后生成的key里面,是包含了這個comment的。這是事實,不過在驗證時,glowd@gmail.com后面的這部分是沒有作用的,你可以任意修改。
- 結論:密鑰不和任何comment綁定,任何地方使用都是一樣的,嚴格來說,如果沒有特殊需求,一個就夠了。系統默認在校驗的時候就會讀取ssh-add -l中key所對應的密鑰文件
總結
以上是生活随笔為你收集整理的ssh免密码登录全过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 静态路由 动态路由 默认路由 默认网关
- 下一篇: Flutter技术与实战(4)