tunnel SSH

SSH(Secure Shell)

一種加密的網絡傳輸協議,可讓使用者在加密的環境下遠端連線到目標主機

 

防止ssh被暴力密碼破解的常見方法

  • 方法1
    使用類似denyhosts之工具
    http://denyhosts.sourceforge.net/
  • 方法2
    使用公私鑰技術即可不用密碼登入
  • 方法3
    更改預設port tcp 22,但攻擊者若scanport還是會發現

 

SSH基本使用

格式:
ssh [ parameter] < ssh server address>

  • < ssh server address> 格式有兩種
    domain or ip: 預設以root登入
    username@domain or ip:指定一個帳戶名稱登入

  • [parameter]常見的有以下
    -p 指定port連到ssh server,預設為tcp port 22
    -v 顯示完整執行過程
    -V 顯示版本資訊
    – < command> 執行指令並回傳結果

ex:
執行指令並回傳結果
#ssh peter@ssh.systw.net  -- hostname
ssh.systw.net

 


SSH 進階使用

Local Port Forwarding

建立本地轉送,以ssh伺服器的角色連接特定位置,可解決像是只能用127.0.0.1開啟的服務
格式:
ssh -L < local port>:< specific address>< specific port> < ssh server address>

說明:
-L < local port> 建立一條通道,並指定要用那一個local port對映到ssh server上的指定的位置和port
< specific address> : 要讓ssh server前往的位置
< specific port> : 要讓ssh server前往的port

ex:
以下指令執行後,在瀏覽器輸入127.0.0.1:1234,等同用ssh.systw.net主機開啟自己的localhost:80
#ssh -L 1234:localhost:80 ssh.systw.net

 

Remote Port Forwarding

建立反向連線,讓外部主機可以透過ssh反向通道連回內部主機
格式:
ssh -NfR < listen port>:localhost:22 < ssh server address>

說明
-R < listen port> :啟用反向連線,並指定要用那一個port連回來
-f : 連線認證後, 在背景執行
-N:不執行遠端指令, 僅做封包重新導向
< ssh server address>:外部ssh主機的位置

ex:
1
在內部主機輸入以下指令 
#ssh -NfR 2345:localhost:22 ssh.systw.net

2
在ssh.systw.net外部主機上可輸入以下指令,即可連回內部主機
#ssh localhost -p 2345

 

SOCKS Server

讓ssh server變成代理伺服器
格式
ssh -D < local port> -q -C -N -f < ssh server address>

說明
-D < local port> : 建立socks代理,並指定client要指定的port
-q 將 warning 等訊息隱藏
-C 壓縮所有資料

ex:
1.
在client端執行以下指令,建立socks代理
ssh -D 3333 -q -C -N -f ssh.systw.net

2
在client的代理伺服器設定中,設定socks的位置為localhost,port為3333

3
連到what is my ip等網站,確認ip是否己換成ssh主機上網用的ip

 

refer
https://myapollo.com.tw/2018/04/26/ssh-port-forwarding/
http://josephj.com/entry.php?id=312
https://myapollo.com.tw/2019/01/06/ssh-socks-proxy-server/