工作中,需要經常登陸到開發機上,一般我們輸入
1 ssh username@example.com
之后,會提示輸入密碼,即可完成登陸。
每次都輸入這么多,太麻煩,我用如下方法快速方便地登陸:
第一步,先省去輸入密碼操作,方法如下:
在自己的機器上使用ssh-keygen生成一對公鑰和私鑰
1 ssh-keygen -t rsa -C 'your email address'
按照提示,默認會生成 ~/.ssh/id_rsa, ~/.ssh/id_rsa.pub
然后我們需要將公鑰id_rsa.pub添加到服務器的authorized_keys,這樣,就可以免密碼登陸了。
用老辦法登陸到服務器上,在服務器上如下操作
1 cd ~/.ssh 2 vim authorized_keys
將上步在本地機器上生成的id_rsa.pub內容附着到服務器上的authorized_key文件后面(如果原文件有內容的話),保存。
這里,還需注意服務器上.ssh文件夾及authorized_key這個文件的訪問權限。
1 chmod 600 authorized_keys 2 chmod 700 .ssh
一切ok,現在使用ssh username@example.com,不需要輸入密碼了,直接就登陸進去了!
第二步,省去輸入username@example.com,此步驟在本地機器上操作
方法較多,可以在.bashrc中添加alias;也可以寫一個.sh腳本文件,執行一下該文件就行。
但是這里,我使用ssh config方法來完成。具體如下
1 cd ~/.ssh 2 vim config
在config文件里,添加如下代碼
1 Host dev 2 hostname example.com 3 user username
現在在console試試
1 ssh dev
就可以直接成功登陸了!
因為上面第一步,我們在服務器的authorized_keys添加了自己的公鑰,所以登陸很方便;但有些時候,我們沒有權限做這個事情,比如登陸公司relay機等,還是得輸入密碼。一個console不夠用,我們想新開一個console tab(如我用iTerm, command+T),這個時候我們在新窗口里面ssh login時,又提示輸入密碼,很煩。下面的辦法可以解決!
在本地機器上,還是打開.ssh/config文件,添加如下幾行
1 Host * 2 ControlPath ~/.ssh/master-%r@%h:%p 3 ControlMaster auto
這樣,我們看到,當第一次連上服務器后,就會在.ssh下生成一個master-usrname@example:port的文件,此后,建立同樣的新連接會共享這個文件,不需要輸入密碼了。
經過這些配置,現在登陸起來是不是方便多了?
