常使用 ssh 連去遠端工作,連遠端時在 windows 我使用 xshell,他有工具可以幫我記帳密,只要點選便可以連結,但在我 ubuntu 的工作環境使用 terminal 的時候,必須打完整的指令 ssh root@chan15.info
,然後再輸入密碼,是不會很麻煩啦,但目前專案越來越多跟需另開視窗同一 server 啟用 node.js 服務越來越頻繁的情況,希望可以減少輸入的頻率,最簡單的方式就是用金鑰,可以免輸入密碼,接下來是建構介紹
建立配置金鑰
金鑰的概念是,你在本基上 generate 一組 public key 跟 private key,然後將 public key 置入 remote server 中,你就可以用你的 private key 登入該 remote server,在 Linux 環境有 ssh-keygen
指令可以建立,在 windows 的話,很多 Linux 模擬器例如 cmder,xshell 本身也有 gen 的功能,或者是使用 puttygen,都是在做一樣的事情,這邊我使用 key-gen 來做。
# 先切換到自己帳號的目錄,並建立一個 .ssh 的資料夾 # Windows 的話會是 C:\Users\root\.ssh # Linux 的話就是 /home/root/.ssh $ ssh-keygen -t rsa - C "chan15tw@gmail.com" # 這邊會問你名稱,我要連到自己的 chan15 server,所以我取名為 chan15 然後按下 enter $ Enter file in which to save the key (/c/Users/kr141101/.ssh/id_rsa):chan15 # 接著問你要不要密碼,可以跳過 $ Enter passphrase (empty for no passphrase): # 看到這個畫面就表示成功了 $ Your identification has been saved in chan15. $ Your public key has been saved in chan15.pub. $ The key fingerprint is: $ SHA256:IrXB6LfAtW7rFMJlIRjrx+JWaty2nLKNc0jrFM0+9nc chan15tw@gmail.com $ The key's randomart image is: $ +---[RSA 2048]----+ $ | .o. .. | $ | o+. . E | $ | +.o . . | $ | . + =o | $ | . Bo.S | $ | o.B o. | $ | .BoB.o . . | $ | o+O.*o+.o . | $ | +BO.++o.. | $ +----[SHA256]-----+ # 資料夾會有 chan15 以及 chan15.pub,兩個檔案,看一下 chan15.pub 有什麼 $ cat chan15.pub $ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC91YXEW08rAIzVc3xS5owRsIBizSlZJvkaJcddZEGP3XrQk+3fC0lDpMdXR2UfoIMdFQbMHETcsfeuEgivjUzqppA7QRcxV/uCbrfRtrz38nR9Nu/celqUPTEF2k1RjyK19acsTOOaX/hS8KFBw91HnENAUUpFtmjMXEsgPern9YV3DcgFBxKrgtg13lnzDoSVVYdmqqqxZG6OggJE6r27lF9BIfz8fdcuGBMbNx5DvivEu/h6Hejj0ax9N5DAqJhSCASSkd+dRYUur7OMptvM05UDgl/zAuRWlT9jO38yMvMBFztcyAPUGeVANV6nG0Kbr2GQe9T5Hi1wtf1y/yCX chan15tw@gmail.com
網路上很多將 pub key 加到 remote server 的方法,像是用 cat,用 scp 等等的,但最妥當沒風險的,就是你直接打開 remote server,然後找到 /home/root/.ssh/authorized_keys
,將 pub key 加到裡面去,如果你沒有這個檔案,還可以自行創立,然後將權限設定為 600。
連線管理與配置
接下來我們就可以用指令連線到 remote server
$ ssh -i chan15 root@chan15.info
這個指令意思就是使用 chan15 這個 private key 去連線到 remote,而 remote 那邊會去找 root 根目錄 authorized_keys 有沒有對應的 key,有的話就會 pass,但樣指令還是太長,我們可以透過設定 config 將指令縮短,打開 local /hoem/root/.ssh/
,建立一個叫 config 的檔案,內容如下:
Host chan15 HostName chan15.info User root IdentityFile /home/root/.ssh/chan15
這樣設定好以後只要執行 ssh chan15
就可以連線了,是不是很方便。
參考文章
https://blog.longwin.com.tw/2005/12/ssh_keygen_no_passwd/
http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/
沒有留言:
張貼留言