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/