如果有一個臺外部的機器waibu-host, 位於阿里雲, 騰訊雲, 亞馬遜, azure雲等等;
假設你想從這個waibu-host上訪問公司任意服務,下載程式碼, 訪問http服務,等等, 或者你機器上的服務, 不需要額外工具, 只要ssh 反向就可以實現;
借個圖, 如下:
舉個例子, 如果你想從公司內部透過git ssh下載gitlab程式碼, 該怎麼做呢?
假設內部的gitlab ssh下載地址為 gitlab.inner.com:2222
第一步: 內部你的公司機器上執行ssh 反向代理, 建立隧道;
這條命令會在你的機器上起一個代理, waibu-host上起一個監聽埠2222
ssh -i ./ssh-key.pem -ngfNT -R 2222:gitlab.inner.com:2222 user@waibu-host
命令執行完畢, 在waibu-host上可以看到2222埠監聽, 訪問2222就可以透過你的機器(建議用linux) 代理到內部的 gitlab上;
第二步: 在waibu-host對ssh再做一點配置, 如下, 讓下載程式碼的解析到本地, 並且增加使用者和key配置
# cat ~/.ssh/config Host gitlab.inner.com HostName 127.0.0.1 User git IdentityFile ~/.ssh/id_rsa Port 2222
第三步: 在公司內部的gitlab上你的賬戶下, 增加ssh key憑證; 將waibu-host上的公鑰增加到你的賬戶下.
如果已有秘鑰, 忽略這一步;
如果沒有想生成秘鑰, 可如下操作
# ssh-keygen -t rsa -b 1024 #連續回車, 這樣在~/.ssh/下就產生了 id_rsa id_rsa.pub秘鑰, 在公司內部gitlab上增加 id_rsa.pub秘鑰
第四步: 在waibu-host驗證 ssh 到gitlab是不是成功了; 如果看到下面的輸出, 就是成功了; 如果沒有, 回頭檢查一下
# ssh -T -p 2222 gitlab.inner.com -l git Welcome to GitLab, @user!
第五步: 在waibu-hos愉快的下載程式碼, 例如下面; 這樣, 即使你的程式碼中還巢狀了內部的gitlab地址, 仍然可以愉快的使用
git clone ssh://gitlab.inner.com:2222/project/modules...