使用 SSH 登入時不用輸入帳號密碼 |
原理簡介
免輸入帳號密碼的原理簡單的說就是靠一些加密編碼的演算法, 產生一組很長又混亂的字串及檔案, 這組資料分別為私鑰 (private key) 與公鑰 (public key), 接著將公鑰傳至想要可以免帳號密碼登入的主機上, 由於主機上存有與你電腦中私鑰相關連的公鑰, 因此, 在登入主機進行驗證使用者身分時, 主機就會認為你是驗證通過的使用者, 就可以免帳號密碼登入囉。
基本使用狀況
產生公私鑰:
ssh-keygen -t rsa -C "[email protected]"用上面這個指令會產生一組公私鑰, 分別是私鑰 id_rsa 及公鑰 id_rsa.pub, 預設被存於 ~/.ssh 資料夾裡。
將公鑰上傳至欲免輸入帳號密碼驗證的主機及相對應的使用者帳號上:
scp ~/.ssh/id_rsa.pub your_account@server_hostname:~/.ssh/接著登入主機將公鑰加入授權名單中:
ssh your_account@server_hostname
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
使用 Github 時
由於我個人使用偏好習慣, 喜歡將公私鑰做一些分類, 於是像是在使用如 Github 一些網路服務的網站時, 用的公私鑰也會不一樣, 這時候就要用下列指令額外命名檔案了。
ssh-keygen -t rsa -P '' -C '[email protected]' -f ~/.ssh/github_rsa其餘詳細步驟可以參考官方網站的 Generating SSH Keys 這篇文章。
結合自有主機操作
編輯 ~/.ssh/config (如果沒有這個檔案請自行建立) 可以建立一些偏好設定, 下面的設定主要是設定哪個主機要使用哪個對應的私鑰:
Host mydev HostName dev.plusdiff.com User plusdiff IdentityFile ~/.ssh/plusdiff_dev Host myprod HostName prod.plusdiff.com User root IdentityFile /Users/andre/Documents/andre-plusdiff.pem Host github.com HostName github.com User git IdentityFile ~/.ssh/github接著搭配編輯 /etc/hosts, 不論在公有 IP 或是私有 IP 及 VPN 下都相當好用:
192.168.1.10 dev.plusdiff.com 11.22.33.44 prod.plusdiff.com #ip of ec2 instances or other public servers接下來只需要使用
ssh mydev或
ssh myprod就可以直接登入主機了。
終極懶人法
如果懶到連 ssh 三個英文字母都不想打, 在 Terminal 輸入下面的 alias:
alias mydev='ssh mydev' alias myprod='ssh myprod'最後只要在 Terminal 上直接打 mydev 或 myprod 就可以直接登入操作自有主機、EC2 或 Linode 的服務了。
留言
張貼留言