博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、navicat客户端连接sqlserver服务器配置时,native client驱动程序设置会困扰很多同学。

       这里默认SQL Server Native Client RDA 11.0,但是很多时候不一定能够连接的上。

       这里可以在系统里搜索odbc,查看哪个驱动可以连接就用哪个驱动。然后复制驱动的名称到native client驱动程序的输入框。

       我们这里因为是sqlserver2022,驱动程序名称直接是“SQL Server”,而不是“SQL Server Native Client RDA 11.0”

二、在 Windows Server 2025 上安装 OpenSSH 服务器(记得自己开放服务器的22端口

  步骤 1: 下载 OpenSSL
    访问 OpenSSL 官方网站或 Shining Light Productions:虽然 OpenSSL 官网提供了源码,但对 Windows 用户来说,更方便的是从 Shining Light Productions 网站下载预编译的二进制文件。
         选择适合你系统的版本:确保下载适用于 Windows Server 平台的版本(通常有 Win32 和 Win64 版本,请根据你的系统架构选择)。

  步骤 2: 安装 OpenSSL

    运行安装程序:双击下载的 .exe 文件开始安装过程,按照提示进行操作。

    选择安装路径:默认情况下,OpenSSL 会被安装到 C:\Program Files\OpenSSL-Win64\ 或者 C:\Program Files (x86)\OpenSSL-Win32\,你可以根据需要更改安装目录。

    完成安装:遵循安装向导直至完成。

  步骤3:启动 OpenSSH 服务,并设置为自动启动

    打开powershell,输入:

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-Service -Name sshd

三、在客户端创建ssl隧道,使用 SSH 端口转发(建议SQL Server监听端口不要用1433,取一个大一点的

  假设你的 Windows Server IP 地址是 server_ip,SQL Server 监听的端口是 sql_server_port(通常是 1433),你希望将本地端口 local_port 转发到服务器上的 SQL Server 端口。

  在客户端机器上执行以下命令建立 SSH 隧道:

ssh -L local_port:localhost:sql_server_port username@server_ip

四、在navicat里配置SSL通道:

 如果连接成功,就OK了。

 

使用 SSH 端口转发(也称为 SSH 隧道)有许多好处,特别是在需要安全地访问远程服务时。以下是 SSH 端口转发的主要优点:

### 1. **增强安全性**
- **加密通信**:SSH 使用强加密算法来保护数据传输,防止中间人攻击和窃听。通过 SSH 隧道,所有经过隧道的数据都会被加密,确保敏感信息的安全性。
- **避免明文传输**:许多数据库和其他网络服务默认使用未加密的协议(如 SQL Server 的默认 TCP/IP 连接),通过 SSH 隧道可以将这些未加密的连接转换为加密连接。

### 2. **绕过防火墙限制**
- **穿透防火墙**:有时,由于网络策略或防火墙配置,某些端口可能被封锁。通过 SSH 隧道,你可以将流量转发到一个开放的 SSH 端口(通常是 22),然后在服务器端将其转发到目标服务端口。
- **本地开发环境**:即使你的本地机器无法直接访问某个远程服务,只要能够通过 SSH 访问一台可以访问该服务的机器,你就可以通过 SSH 隧道进行访问。

### 3. **简化复杂网络拓扑**
- **跨越多个网络**:如果你需要访问位于不同网络中的服务,可以通过 SSH 隧道简化网络路径。例如,你可以通过一台跳板机(bastion host)建立 SSH 隧道,从而访问内网中的服务。
- **减少暴露的端口**:通过 SSH 隧道,你可以只暴露一个 SSH 端口(通常为 22),而不需要公开其他服务端口,减少了潜在的安全风险。

### 4. **方便的远程调试和开发**
- **本地开发工具**:通过 SSH 隧道,你可以在本地开发环境中使用熟悉的工具(如数据库客户端、Web 浏览器等)直接访问远程服务,而不必担心远程服务的安全性和可访问性。
- **动态端口转发**:使用 `-D` 选项可以创建 SOCKS 代理,允许你通过 SSH 隧道访问互联网上的任何资源,适用于需要代理上网的场景。

### 5. **易于设置和管理**
- **无需额外软件**:大多数操作系统都预装了 SSH 客户端和服务器,因此不需要安装额外的软件即可实现端口转发。
- **灵活性**:可以根据需要灵活配置不同的端口转发方式(本地转发、远程转发、动态转发),以适应各种应用场景。

### 常见的 SSH 端口转发类型

#### 1. **本地端口转发(Local Port Forwarding)**
- 将本地端口转发到远程服务器上的某个服务。
- 命令格式:
```bash
ssh -L local_port:remote_host:remote_port username@server_ip
```
- 示例:将本地的 12222 端口转发到远程服务器的 1433 端口(SQL Server 默认端口)
```bash
ssh -L 12222:localhost:1433 username@server_ip
```

#### 2. **远程端口转发(Remote Port Forwarding)**
- 将远程服务器上的端口转发到本地的服务。
- 命令格式:
```bash
ssh -R remote_port:local_host:local_port username@server_ip
```
- 示例:将远程服务器的 12222 端口转发到本地的 1433 端口(SQL Server 默认端口)
```bash
ssh -R 12222:localhost:1433 username@server_ip
```

#### 3. **动态端口转发(Dynamic Port Forwarding)**
- 创建一个 SOCKS 代理,允许你通过 SSH 隧道访问互联网上的任何资源。
- 命令格式:
```bash
ssh -D local_port username@server_ip
```
- 示例:创建一个本地的 SOCKS 代理,监听 1080 端口
```bash
ssh -D 1080 username@server_ip
```

### 实际应用场景示例

#### 场景 1: 访问远程数据库
假设你需要从本地机器访问公司内部网络中的 SQL Server 数据库,但数据库服务器不允许外部直接访问。你可以通过一台可以访问数据库的服务器建立 SSH 隧道:
```bash
ssh -L 1433:database_server_ip:1433 your_username@jump_server_ip
```
这样,你就可以通过 `localhost:1433` 来访问远程的 SQL Server 数据库。

#### 场景 2: 绕过公司防火墙访问外部资源
如果你所在的网络环境限制了对某些外部资源的访问,但你有一台可以访问这些资源的远程服务器,可以通过 SSH 动态端口转发创建 SOCKS 代理:
```bash
ssh -D 1080 your_username@remote_server_ip
```
然后在浏览器或其他支持 SOCKS 代理的应用程序中配置代理地址为 `localhost:1080`。

### 总结

SSH 端口转发是一种强大且灵活的技术,能够在不牺牲安全性的情况下提供便捷的远程服务访问。无论是为了增强安全性、绕过网络限制还是简化复杂的网络拓扑,SSH 隧道都是一个非常有用的工具。通过合理配置和使用 SSH 端口转发,你可以显著提升工作效率并保障数据安全。