2 个 sshd 配置,1 个用于内部,1 个用于外部

2 个 sshd 配置,1 个用于内部,1 个用于外部

我如何设置开放的 ssh 服务器,以便如果我从本地局域网进行 ssh,我希望它通过端口 22 进行,但如果我从外部进行 ssh,则希望它通过端口 12345 进行。

然后对于外部访问,我想在 sshd_config 中制定一些不同的(更严格)规则

答案1

艾瑞克·卡瓦略的答案适用于 15.04 之前的版本,但他们弃用了 Upstart,然后从 Ubuntu 中删除了它,SystemdForUpstartUsers

这些步骤已适合与 systemd 配合使用。

  1. 复制 SSH 配置文件:

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_external

  2. 复制 systemd 配置文件:

    sudo cp /lib/systemd/system/ssh.service /lib/systemd/system/sshd-external.service

    在新文件(/lib/systemd/system/sshd-external.service)中更改行:

    ExecStart=/usr/sbin/sshd -D $SSHD_OPTS

    到:

    ExecStart=/usr/sbin/sshd -D $SSHD_OPTS -f /etc/ssh/sshd_config_external

    以及以下行:

    Alias=sshd.service

    到:

    Alias=sshd-external.service

  3. 现在/etc/ssh/sshd_config_external根据您的需要进行定制(例如更改Port 22Port 12345

  4. 启用服务

    sudo ln -s /lib/systemd/system/ssh-external.service /etc/systemd/system/sshd-external.service

    如果你已经运行了上述命令,则sudo systemctl disable sshd-external.service在运行下一个命令之前运行

    sudo systemctl enable sshd-external.service

    sudo service sshd-external start

这已经在真实硬件上的 Ubuntu 16.04 和 virtualbox 中的虚拟机上进行了测试。

如果这不起作用,请告诉我。我有时会犯错。

答案2

创建另一个 SSH 服务实例。

  1. 复制 SSH 配置文件:

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_external
    
  2. 复制 upstart 配置文件:

    sudo cp /etc/init/ssh.conf /etc/init/ssh-external.conf
    

    在新文件 ( ssh-external.conf) 中,将以下行更改:

    mkdir -p -m0755 /var/run/sshd
    

    到:

    mkdir -p -m0755 /var/run/sshd-external
    

    并改变这一行:

    exec /usr/sbin/sshd -D
    

    到:

    exec /usr/sbin/sshd -D -f /etc/ssh/sshd_config_external
    
  3. 创建到 upstart 的链接:

    sudo ln -s /lib/init/upstart-job /etc/init.d/ssh-external 
    

现在/etc/ssh/sshd_config_external根据您的需要进行定制(例如更改Port 22Port 12345)并启动服务:

sudo service ssh-external start

相关内容