在 Ubuntu 上运行 openssh-server (sshd) 的多个副本

在 Ubuntu 上运行 openssh-server (sshd) 的多个副本

我可能用错误的方法解决这个问题,如果是这样,请告诉我。

我有一台服务器,可通过 SSH 从公共互联网和本地 LAN 访问。我希望通过sshd_config在不同端口上运行两个 sshd 副本(每个副本包含两个不同的文件)为每个服务器设置两个截然不同的安全策略。

我想改变的一些事情是允许在 LAN 上使用密码或公钥身份验证,但只能在互联网上使用公钥。所有(真实)用户都可以从 LAN 端登录,但只有某些授权用户才能通过互联网登录,并被单独列入白名单。

据我所知,这需要在不同端口上运行两个不同的 SSH 守护程序,并使用不同的sshd_configs。我对不同的端口部分很满意,我可以轻松地通过防火墙将端口 22 转发到我想要的任何端口。

所以我的问题是,在 Ubuntu 10.04 LTS 下实际启动第二个 sshd 的最佳方法是什么。有没有推荐的方法来做这样的事情?当然我不是第一个有这种需求的人。

我对 upstart 有一点经验,我想我可以手动将第二个 sshd 破解到 /etc/init/ssh.conf 中,但我不确定这是否会被软件包覆盖。无论我如何做,重要的是确保在 openssh-server 软件包的任何自动或手动升级后始终重新启动两个 sshd 进程。

提前致谢。

答案1

按照操作系统传统启动 SSH 守护进程的方式启动单独的 SSH 守护进程:

如果 Ubuntu 现在使用upstartsshd 启动,请创建类似于标准作业的新 upstart 作业,仅将守护进程指向您的自定义配置文件。

如果使用init.drc#.d脚本,请复制它们并根据需要修改它们。

这样可以避免任何软件包更新破坏您的自定义设置,并让您可以精细控制启动/停止/重新启动您想要定位的特定 SSH 守护程序。这也意味着进入您的世界的管理员将能够识别正在发生的事情以及如何启动/停止/重新启动这些守护程序,因为它是以操作系统的常规方式完成的,而不是通过黑客手段。

相关内容