OpenSSL 连接成功后服务器无响应

OpenSSL 连接成功后服务器无响应

我正在使用 OpenSSL 测试服务器连接,结果各不相同

  • 服务器 A:连接成功,用户登录成功,其他命令也成功运行
  • 服务器 B:连接成功,但当我尝试提交命令时,服务器没有响应。我没有收到错误,甚至没有断开连接 - 只是在我按下 Enter 或 ^M 的地方出现了一个空白行

我的直觉是,服务器 B 的配置需要不同的字符编码或其他东西,而它根本无法识别我的 Enter 键,但我一直无济于事……如能得到任何建议,我将不胜感激!

答案1

我和@UtahJarhead 一样假设你的意思是 OpenSSH。

我不太了解编码,但当得知空格、回车、空值等低端 ASCII 字符有所不同时,我会感到很惊讶。

  1. 检查服务器B用户的shell。你能以某种方式访问​​该机器和su该用户吗?是否会出现同样的问题?
  2. 检查 sshd 配置。是否有任何可疑的选项,例如ChrootDirectoryForceCommand等等?比较两台服务器的 sshd 配置,看看哪些地方可疑
  3. 调试. 连接到服务器 Bssh -vvv user@serverb并查找 sus 输出。我的 shell 配置如下:

    debug2: channel 1: request shell confirm 1
    debug2: callback done
    debug2: channel 1: open confirm rwindow 0 rmax 32768
    debug2: channel_input_status_confirm: type 99 id 1
    debug2: PTY allocation request accepted on channel 1
    debug2: channel 1: rcvd adjust 2097152
    debug2: channel_input_status_confirm: type 99 id 1
    debug2: shell request accepted on channel 1
    

    对于我来说,这是调试输出的最后几行。

如果以上任何一项都失败了——那么这些机器之间有哪些明显的不同?

答案2

事实证明我最初的怀疑是正确的……服务器根本不接受我的 Enter 命令。添加标志-crlf 解决了这个问题:

openssl s_client -connect server:port -crlf

据我所知,这会强制 s_client 工具CR/LF在您按下 Enter 键时发送一个,而这对于基于 Windows 的服务器读取是必需的。因此,服务器 A 之所以能正常工作,可能是因为它是 *​​NIX 服务器,而服务器 B 是 Windows 服务器。

相关内容