SSHä»£çæ§è½å¼éè§£æ | AIçæåç¿»è¯
æ§ç SSH è·¯å¾æ¯è¿æ ·çï¼
git â ssh â ncat (åè¿ç¨) â SOCKS5 â mihomo (:7891) â Hysteria2 â DMIT LA â GitHub
èæ°ç HTTPS è·¯å¾ï¼
git â HTTP 代ç â mihomo (:7890) â Hysteria2 â DMIT LA â GitHub
SSH è·¯å¾è¾æ ¢çåå æä¸ç¹ï¼
-
é¢å¤çè¿ç¨è·³è½¬ãncat éè¿
ProxyCommand以åè¿ç¨æ¹å¼å¯å¨ãSSH ä¸ ncat ç stdin/stdout éä¿¡ï¼ncat å转åå° SOCKS5ãæ¯ä¸ªåèé½è¦ç»è¿ä¸¤æ¬¡é¢å¤çä¸ä¸æåæ¢ï¼å æ ¸ â ncat â å æ ¸ â mihomoï¼ãè HTTP è·¯å¾ç´æ¥è¿å ¥ mihomo ç socket ââ æ²¡æä¸é´è¿ç¨ã -
TCP-over-TCP å´©æºãSSH è¿è¡å¨ TCP ä¹ä¸ï¼SOCKS5 ä¹è¿è¡å¨ TCP ä¹ä¸ãå æ¤ï¼git æ°æ®å°è£ å¨ SSH ç TCP æµä¸ï¼èè¯¥æµæ¬èº«åä½äºä¸ SOCKS5 代ççå¦ä¸æ¡ TCP è¿æ¥å ã两个ç¬ç«ç TCP æ¥å¡æ§å¶ç®æ³ç¸äºç«äºââå½åçä¸¢å æ¶ï¼ä¸¤å±é½ä¼éä¼ å¹¶éé¿ï¼æ¾å¤§åéææãHTTP CONNECT æ¯å次 TCP 跳转ï¼mihomo 建ç«é§éï¼ä¸ GitHub çåºå± TLS è¿æ¥éè¿å个 TCP æµç«¯å°ç«¯è¿è¡ã
-
ncat çä¸ç»§ç¼å²åºã仿é è¯»çæºä»£ç ï¼
ncat.h:140ï¼ä¸å¯ä»¥çå°ï¼DEFAULT_TCP_BUF_LEN = 8192ââ å¨ select() 循ç¯ä¸ä»¥ 8KB 读åãæ¯ä¸ªæ°æ®åé½éè¦ä¸æ¬¡ read ç³»ç»è°ç¨ã䏿¬¡ write ç³»ç»è°ç¨å䏿¬¡ä¸ä¸æåæ¢ã对äºä¸ä¸ª 30MB ç git å ï¼å¤§çº¦éè¦ 3,700 次系ç»è°ç¨å¯¹ãè HTTP 代çè·¯å¾è®©å æ ¸éè¿èªèº«çç¼å²åºç®¡çæ´ç´æ¥å°å¤çæ°æ®ï¼æ éé¢å¤çç¨æ·ç©ºé´ä¸ç»§ã
HTTP 代çï¼mihomo å¨ :7890 端å£ï¼æ¬è´¨ä¸åªæ¯ä¸ä¸ª HTTP CONNECT é§éââ宿¥æ¶ CONNECT 请æ±ï¼æå¼ä¸æ¡å° GitHub ç TCP è¿æ¥ï¼ååº â200 OKâï¼ç¶å mihomo ç´æ¥éä¼ åå§åèãæ¯ SSH/SOCKS5/ncat é¾çå¼éå°å¾å¤ã
