關於SSH的二三事

所有Developer的必備工具

Posted by silau on October 10, 2019

SSH的話就是Secure SHell的縮寫,是一種加密的網路傳輸協定,而我們在Linux環境下最常用到的命令行就是ssh。

我第一次接觸這種登入方式要回到我在美國讀書的時期,那只是一個簡單的Assembly Language入門,但需要用到Linux環境去做一些跟C語言編譯有關的練習。由於跟以往使用Windows的圖形介面完全不同,作為門外漢對這種登入方式完全是狀態外,除了因為交功課要用到之外也沒有感受到有什麼方便的地方。那段時期即使自己鼓搗Ubuntu也是使用附有圖形介面的版本,而之後開始使用網上一些Virtual Host的服務,也是使用圖形介面(cPanel)居多。

這情況在Cloud Computing流行之後出現了改變,由於雲計算的普及,網上出現了很多VPS(Virtual Private Server,虛擬專用伺服器)供應商。首次接觸是由Partner小明推介的Linode,VPS跟Virtual Host相比,相差可不止一點點,VPS的可操控性跟潛力要高上一萬倍,這亦代表了區區一個cPanel不足以應付VPS的多數工作。

我就在 「python 新手使用 django 架站的 16 堂課」 這本書的指引下,順利登入到VPS並一步一步完成了Django的設定步驟。

萬事起頭難,之後隨著使用的機會越來越多,也越感覺到Terminal環境的方便之處,目前在Mac機工作,多數都在Terminal跟Text Editor之間來回完成。

好吧,以下先記一下ssh的登入方式:

ssh [email protected]

# use -p to specify the port
ssh -p yourport [email protected]

有時候你會想從SERVER下載檔案,這時你可以使用scp命令:

# download file from server to local
scp [email protected]:/home/yourusername/examplefile .

# in case you want to specify the port
scp -P yourport [email protected]:/home/yourusername/examplefile .

# upload a file from local to server
scp examplefile [email protected]:/home/yourusername/

最後是稱為SSH Tunneling的高階技巧,有時候我們基於安全性考慮會將一些功能限制在localhost使用(跟HTTP相對應),這時候使用SSH Tunneling進行Port Forwarding,將遠端的服務帶到本地使用。

ssh -L [local_port]:localhost:[remote_port] [email protected]
ssh -R [remote_port]:localhsot:[local_port] [email protected]