美文网首页
使用ssh config作为ssh代理轻松管理内网服务器

使用ssh config作为ssh代理轻松管理内网服务器

作者: 王奥OX | 来源:发表于2019-02-01 16:00 被阅读197次

前言

企业内部大部分服务器都只有内网,一般可以使用NAT方式正向代理访问公网资源。对于Linux来说一般通过ssh登录服务器,在没有公网IP的情况下可以修改ssh config配置文件,利用一台可以接入内网并具有公网IP的服务器作为代理或者称为Tunnel跳板机来管理,可以灵活定制访问规则并优化ssh参数让管理更加轻松。

使用ssh config作为ssh代理轻松管理内网服务器


更新历史

2019年01月31日 - 初稿

阅读原文 - https://wsgzao.github.io/post/ssh-config/

扩展阅读

SSH CONFIG FILE - https://www.ssh.com/ssh/config/


ssh_config的配置文件来源

man ssh_config

NAME
     ssh_config -- OpenSSH SSH client configuration files

DESCRIPTION
     ssh(1) obtains configuration data from the following sources in the following order:

           1.   command-line options
           2.   user's configuration file (~/.ssh/config)
           3.   system-wide configuration file (/etc/ssh/ssh_config)

ssh程序可以从三个途径获取配置参数:

  1. 命令行选型,比如 -F configfile
  2. 用户配置文件,放置在 ~/.ssh/config
  3. 系统配置文件,放置在 /etc/ssh/ssh_config(区别于 /etc/ssh/sshd_config)

上面三个途径,前面的途径传入的参数可以覆盖后面的途径传入的参数(与 linux 里的大部分应用类似)。因为/etc/ssh/ssh_config 会影响 ssh 全局的配置,因此如果想对多主机进行管理(不影响别人的情况下),可以考虑修改自己家目录下的~/.ssh/config 文件(~ 字符表示当前登录用户的家目录)。

ssh_config配置文件实例

首先看一个配置文件的 demo,假设8.8.8.8是你可以直接登录的Tunnel公网跳板机,10.65.32.0是需要管理的内网地址段,前提是8.8.8.8和内网服务器的防火墙策略均已配置正确,这里就不再赘述。

# cat ~/.ssh/config

StrictHostKeyChecking no
CheckHostIP no

Host 10.65.32.*
  HostName %h
  ProxyCommand ssh bastion_GOP_SG_NC_MAIN -W %h:%p
Host bastion_GOP_SG_NC_MAIN
  HostName 8.8.8.8
  port 22
  User wangao

Host 10.65.200.*
  HostName %h
  ProxyCommand ssh bastion_GOP_SG_MH_MAIN -W %h:%p
Host bastion_GOP_SG_MH_MAIN
  HostName 9.9.9.9
  port 22
  User wangao

CheckHostIP no,禁用known_hosts检查
Directs ssh to additionally check the host IP address in the known_hosts file.

StrictHostKeyChecking no,跳过known_hosts写入
Specifies if ssh should never automatically add host keys to the ~/.ssh/known_hosts file, and refuses to connect to hosts whose host key has changed.

Host 字段
Host 字段配置了登录别名,这里需要注意的是,Host 是支持通配符的, * 代表 0~n 个非空白字符,? 代表一个非空白字符,! 表示例外通配

HostName 字段
指定远程主机名,可以直接使用 IP 地址。如果这个字段中包含 ‘%h’ ,则实际使用时会被命令行中的主机名替换

User 字段
指定登录用户名

IdentityFile 字段
指定密钥认证使用的私钥文件路径。默认为 ~/.ssh/id_rsa。这个字段可以指定多个密钥文件(以 , 分开),在连接的过程中会依次尝试这些密钥文件。和 HostName 字段一样,值也可以直接指定参数代替:

Port 字段
指定远程主机端口号,默认为 22 。

%h,远程主机名
%p,远程端口

参考

如果你还不了解ssh或者对ssh端口转发感兴趣,可以参考以下内容

SSH使用密钥登录并禁止口令登录实践 - https://wsgzao.github.io/post/ssh/

玩转 SSH 端口转发 - https://blog.fundebug.com/2017/04/24/ssh-port-forwarding/

相关文章

  • 使用ssh config作为ssh代理轻松管理内网服务器

    前言 企业内部大部分服务器都只有内网,一般可以使用NAT方式正向代理访问公网资源。对于Linux来说一般通过ssh...

  • 利用反向代理实现内网的ssh连接

    内容实现了再补 参考文章:SSH如何反向代理稳定穿透内网利用ssh反向代理以及autossh实现从外网连接内网服务器

  • 二、SSHconfig命令

    config方便我们批量管理多个ssh。config存放在 ~/.ssh/ 远程ssh登陆linux服务器 ss...

  • macOS登录ssh的超炫酷方法

    ​ssh配置 ssh config配置 ssh-config是使用openssh 的ssh config的功能,需...

  • SSH权限详解

    之前两篇文章利用SSH代理访问内网资源和使用SSH代理在本地开发环境调试各种回调两篇文章,介绍了ssh的各种代理姿...

  • 使用config 来管理ssh的会话

    使用config 来管理ssh的会话 通常利用 ssh 连接远程服务器,一般都要输入以下类型命令: 如果拥有多个s...

  • ssh 无密码登陆 和 管理多个主机

    生产 ssh key 传送公钥到对端服务器上 ssh 多账号管理 创建 .ssh/config 配置文件,由此文件...

  • Linux知识积累

    SSH连接 ssh通过跳板机连接内网服务器,发现能ping通连接不上,检查了/etc /ssh/ssh_confi...

  • ssh

    ssh ssh tunnel实现反向代理 假设在内网有一个自己的电脑IN,希望在外网访问内网资源。由于内网电脑没有...

  • git中设置代理强制转换协议

    设置git@走代理 修改~/.ssh/ssh_config 添加ProxyCommand nc -x 127.0....

网友评论

      本文标题:使用ssh config作为ssh代理轻松管理内网服务器

      本文链接:https://www.haomeiwen.com/subject/rtedsqtx.html