shell搜索
ag
ggreer/the_silver_searcher: A code-searching tool similar to ack, but faster. (github.com
pip
--user
python - What is the purpose of "pip install --user ..."? - Stack Overflow
pip defaults to installing Python packages to a system directory (such as
/usr/local/lib/python3.4
). This requires root access.
--user
makes pip install packages in your home directory instead, which doesn't require any special privileges.
網(wǎng)絡(luò)
socket
Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層合是,它是一組接口。在設(shè)計(jì)模式中济丘,Socket其實(shí)就是一個門面模式来惧,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說心例,一組簡單的接口就是全部宵凌。
ssh 打洞
程序只干兩件事, 特判和打洞 –fhq
這里介紹的"打洞"主要是通過 SSH 代理, 實(shí)現(xiàn)不同 site 或辦公網(wǎng)之間的互相訪問.
打洞可能造成安全風(fēng)險(xiǎn), 建議打洞時監(jiān)聽端口都限制在 127.0.0.1, 以阻止外部訪問.
以下 ssh 打洞方式常配合一些保持連接, 不進(jìn)行登錄等參數(shù), 例如:
-o ServerAliveInterval=30
每 30 秒發(fā)送一次 keep-alive 包防止斷線
-o ServerAliveCountMax=5
若發(fā)送 5 次心跳包, 服務(wù)器都沒有回應(yīng), 則斷開連接
-o ExitOnForwardFailure=yes
若轉(zhuǎn)發(fā)失效, 則斷開連接
-N
只打洞, 不執(zhí)行命令
SSH 三大基礎(chǔ)打洞姿勢
以下 ssh 參數(shù)用于附加在正常 ssh 命令上. 比如, 正常連 ssh 是 ssh workspace1
(配置了 ~/.ssh/config
), 那使用 -D 7071 Host
時, 命令為 ssh -D 7071 workspace1
ssh -D localAddr:localPort Host
效果是開一個可用作一般 socks5 的代理在 localAddr:localPort 上, 當(dāng)使用此代理時, 相當(dāng)于在用 Host 的網(wǎng)絡(luò)訪問.
例如, 要訪問 brain++ 內(nèi)網(wǎng)的 lovelive 網(wǎng)頁時, 可以 ssh -D 127.0.0.1:7071 workspace1
, 然后設(shè)置瀏覽器代理為 socks5://127.0.0.1:7071
. 這樣, 瀏覽器訪問網(wǎng)頁時, 就相當(dāng)于在用 workspace1 的網(wǎng)絡(luò)訪問, 從而可以訪問到 brain++ 內(nèi)網(wǎng)服務(wù).
ssh -L localAddress:localPort:remoteAddr:remotePort Host
訪問 localAddr:localPort 相當(dāng)于在 Host 上訪問了 remoteAddr:remotePort
例如, 要訪問 workspace1 上的 jupyter, jupyter 監(jiān)聽在 workspace1 上的 localhost:8888 上. 可以 ssh -L 127.0.0.1:7777:localhost:8888 workspace1
. 這樣, 通過瀏覽器訪問 127.0.0.1:7777 時, 相當(dāng)于在 workspace 上, 訪問了 localhost:8888, 即可訪問到 jupyter 網(wǎng)頁
ssh -R remoteAddr:remotePort:localAddr:localPort Host
在 Host 上訪問 remoteAddr:remotePort 相當(dāng)于訪問了 localAddr:localPort
例如, 辦公網(wǎng)本機(jī)通過 python -m http.server 8000 --bind 127.0.0.1
啟動了一個 HTTP server 服務(wù), 想在 workspace1 上訪問. 可以本機(jī)執(zhí)行 ssh -R 127.0.0.1:7000:127.0.0.1:8000 workspace1
. 這樣, 在 workspace1 上執(zhí)行 curl 127.0.0.1:7000
時, 相當(dāng)于訪問了辦公網(wǎng)本機(jī)的 127.0.0.1:8000 端口, 即可訪問到 HTTP server.
復(fù)合 SSH 打洞舉例
20181018 SSH 打洞 - liveness space - Meg-Wiki (megvii-inc.com)