使用SSH从公网服务器简易使用内网任意机器服务,比如从外部下载代码

  • 使用SSH从公网服务器简易使用内网任意机器服务,比如从外部下载代码已关闭评论
  • 55 次浏览
  • A+
所属分类:linux技术
摘要

如果有一个台外部的机器waibu-host, 位于阿里云, 腾讯云, 亚马逊, azure云等等; 

如果有一个台外部的机器waibu-host, 位于阿里云, 腾讯云, 亚马逊, azure云等等; 

假设你想从这个waibu-host上访问公司任意服务,下载代码, 访问http服务,等等, 或者你机器上的服务, 不需要额外工具, 只要ssh 反向就可以实现;

 

借个图, 如下:

使用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...