使用SSH从公网服务器简易使用内网任意机器服务,比如从外部下载代码
如果有一个台外部的机器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...