SSH 功能

正向代理、反向代理、ssh-tunnel、ssh over socks5、交換鑰匙

  • 一般連線ssh <user>@<ip> -p <port>
  • 正向代理(left-connection)-遠端port 投射到 本地port: ssh -LN <本地IP>:<本地Port>:<遠端IP>:<遠端Port> <遠端User>@<遠端IP>
    • 持續嘗試連線(要免密、依賴autossh) autossh -LN <本地IP>:<本地Port>:<遠端IP>:<遠端Port> <遠端User>@<遠端IP>
  • 反向代理(right-connection)-本地port 投射到 遠端port: ssh -RN <遠端IP>:<遠端Port>:<本地IP>:<本地Port> <遠端User>@<遠端IP>
    • 持續嘗試連線(要免密、依賴autossh) autossh -RN <遠端IP>:<遠端Port>:<本地IP>:<本地Port> <遠端User>@<遠端IP> ps. 光是這樣是不夠的,反向代理還必須修改,本地端/etc/ssh/sshd_config文件,加入GatewayPorts yes這一行。並且重新啟動sudo service ssh restart
  • ssh-tunnel-本地socks5ssh -DN <本地Port> <遠端User>@<遠端IP>
  • ssh over socks5ssh <遠端User>@<遠端IP> -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p"

  • 免密碼登入/交換鑰匙
  • 如果本地沒有鑰匙,那就生成鑰匙:ssh-keygen -t rsa -C <自己的email>
  • 丟到遠端主機:ssh-copy-id <遠端User>@<遠端IP>

開機自動執行

  • 編輯/etc/rc.local文件
  • exit之前加入指令 範例:

常見指令

-f 后台执行 ssh 指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定主机的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定主机的指定端口
-p 指定远程主机的端口

保持穩定連線

每30秒 發出一個請求

nano ~/.ssh/config
// 加入这句:
ServerAliveInterval 30

參考文獻

Written on December 23, 2019