繁体   English   中英

让SSH登录会话重定向到交互式telnet到localhost

[英]Have SSH login session redirect to interactive telnet to localhost instead

我正在开发一个具有交互式telnet管理控制台的系统。 要求规定我们禁用telnet访问并添加SSH。 将管理控制台更改为可用于SSH登录的独立程序将需要供应商参与。 我在想一个更便宜的解决方案,就是这样的:

  1. 阻止telnet管理控制台从外部访问,但保持运行可用于localhost连接。

  2. 写一个登录shell(在C ++中,也许因为简单的东西这个 ,如果我很幸运),充当代理服务器。 登录shell将telnet到localhost并通过telnet发送它从用户收到的所有命令,并将从telnet服务器收到的所有显示和提示发送回用户。

  3. 当用户通过ssh登录时,更改/ etc / passwd以启动此代理shell。

我在想什么? 我是否会陷入可怕的陷阱? 还有更好的选择吗? 我正在使用OpenSSH作为ssh守护进程。

将Telnet限制为本地连接听起来像一个好的计划,特别是如果您不想触摸代码。 但是,步骤2和3是不必要的。 一旦建立连接,就可以在远程shell中调用“telnet”命令。 这可以通过在用户的主目录中创建.ssh / rc脚本来自动完成。

但是,这种方法的一个潜在问题是Telnet控制序列可能无法正确通过。 因此,另一种方法是使用端口转发通过安全SSH连接来隧道连接Telnet。 使用此策略,您将继续在客户端和服务器上运行Telnet,但连接使用SSH加密。 要设置它,请像这样调用SSH客户端:

ssh -L 23:localhost:23 user@host

将“user @ host”替换为SSH服务器的用户/主机。 此命令的作用是将打开客户端框上的端口23(telnet)。 与它建立的连接将通过SSH转发到服务器上的端口23。 因此,在您的客户端上,您将Telnet到localhost,并且连接将被转发到与SSH守护程序在同一个框上运行的Telnet服务器。

请注意,如果客户端上的安全设置阻止您在那里使用端口23,则可以将第一个“23”更改为其他内容(例如1123)。 在这种情况下,您将Telnet客户端指向localhost:1123或其他任何内容,它将被转发到远程系统上的端口23。 红帽杂志有一个很好的教程 ,使用SSH端口转发这样的用例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM