Ubuntu上RStudio Server连接SQL Server遇SSL协议不支持错误求助
在Ubuntu 20.04.6 LTS上的Free RStudio Server 2023.06.1 Build 524中,通过odbc包连接同一网络内Windows Server 2019 Datacenter上的SQL Server时失败,但终端用isql可正常连接。
连接代码
library(odbc) con <- dbConnect(odbc::odbc(), .connection_string = "DSN=MySqlServerDSN")
/etc/odbc.ini配置
[MySqlServerDSN] Description = My SQL Server Data Source Driver = ODBC Driver 17 for SQL Server Server = 192.168.200.100 Port = 1433 Database = salesdb UID = saun PWD = MyDBPassW0rd
错误信息
Error: nanodbc/nanodbc.cpp:1135: 00000: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol] [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection.
异常点
通过RStudio Server终端执行isql -v MySqlServerDSN saun 'MyDBPassW0rd'可正常连接,怀疑是否存在未配置的RStudio Server SSL设置?
这个问题并非RStudio Server本身的SSL设置问题,而是RStudio Server运行环境的SSL协议配置与终端环境不一致导致的,以下是具体解决步骤:
- 指定SSL协议版本
修改/etc/odbc.ini中的DSN配置,强制指定兼容的SSL协议版本:
[MySqlServerDSN] Description = My SQL Server Data Source Driver = ODBC Driver 17 for SQL Server Server = 192.168.200.100 Port = 1433 Database = salesdb UID = saun PWD = MyDBPassW0rd Encrypt = yes TrustServerCertificate = yes SSLProtocol = TLSv1.2
其中SSLProtocol=TLSv1.2强制使用SQL Server普遍支持的TLS版本,避免协议不兼容;内网环境下TrustServerCertificate=yes可跳过证书验证。
- 同步RStudio Server的SSL环境变量
RStudio Server运行时可能未继承终端的SSL配置,可在R会话中手动设置:
Sys.setenv(OPENSSL_CONF="/etc/ssl/openssl.cnf")
或者修改RStudio Server启动配置文件/etc/rstudio/rserver.conf,添加:
rsession-ld-library-path=/usr/lib/x86_64-linux-gnu/openssl-1.1
添加后重启服务:
sudo systemctl restart rstudio-server
- 更新ODBC驱动
确保ODBC Driver 17 for SQL Server为最新版本,执行更新命令:
sudo apt-get update sudo apt-get install --reinstall msodbcsql17
内容的提问来源于stack exchange,提问作者Ahmed

