很多时候我们都不能直接访问内网机器,一般情况下,我们都是先登录跳板机,然后从跳板机上再进行操作。但这样,很容易在跳板机的history里留下记录。而且,如果有时候临时传文件,就相当于要处理两次:上传到跳板机=》传到目标机。
其实如果利用sshconfig进行一下配置,就可以直接操作这种行为:
- Host bg-a
- HostName 1.2.3.4
- Port 22
- User ubuntu
- IdentityFile ~/.ssh/prod-ubuntu
- Host web-a
- HostName 192.168.200.2
- Port 22
- User ubuntu
- IdentityFile ~/.ssh/prod-ubuntu
- ProxyCommand ssh -q -W %h:%p bg-a
然后你就可以使用 ssh web-a 直接连接到内网的服务器(透过 bg-a),或者 scp /xxx/xxx/x.tar.gz web-a:/tmp/ 这样的操作也支持。【上述内容,其实我本地的sshconfig也有类似操作,只是说我要COPY出来还要修改内容,所以就直接复制线上的】
至于ssh config文件怎么配置,网上有很多教程文章,比如:https://www.toutiao.com/i6700025110645965324/,
其他参考文章:
1、https://github.com/zxdvd/blog/blob/master/content/shell/%E7%94%9F%E4%BA%A7%E5%8A%9B%3A%20ssh%E8%B7%B3%E6%9D%BF%E6%9C%BA%E9%85%8D%E7%BD%AE.md
2、https://github.com/meolu/walle-web/issues/265
3、https://zhuanlan.zhihu.com/p/74193910 (https://mp.weixin.qq.com/s/jUYMulyl0xoPp-Vi3QJ3-Q)
4、https://blog.csdn.net/CityzenOldwang/article/details/77097703 ,这一篇里对.sshconfig的一些配置说明:
- # man 5 ssh_config
- # vim .ssh/config
- Host *
- ForwardAgent yes # 默认转发密钥
- PasswordAuthentication yes # 允许密码登陆
- StrictHostKeyChecking no # 不自动接收公钥,如果设置为 yes,ssh 就不会自动把计算机的密钥加入到 .ssh/known_hosts 文件,并且一旦计算机的密钥发生了变化,就拒绝连接。
- HashKnownHosts yes # 将访问过的 hosts 以 hash 的形式存放,降低被入侵后信息暴露的风险
- Compression yes # 压缩传输,取值on/off/force。在 scp 等传输文件的情况下提高传输速度
- ServerAliveInterval 60
- ServerAliveCountMAx 5