Ssh

正確的 CentOS 7 SSH 配置

  • September 14, 2015

我在更改新 CentOS 7(最小)機器(IP 11.22.33.44)上的埠時遇到了一些麻煩。要登錄新機器,我使用代理 VPS(比如說,IP 88.99.100.101)。

我編輯了/etc/sysconfig/selinux文件以禁用 SElinux 並重新啟動。

[root@host ~]# getenforce  
Disabled

在我禁用 selinux 並重新啟動機器後,我編輯/etc/ssh/sshd_config並將Port條目從 22 更改為假設 7890(只是一個範例)+ systemctl restart sshd。

然後我將 firewalld 的預設 ssh xml 配置文件從 /usr/lib/firewalld/services/ssh.xmlto複製到/etc/firewalld/services/ssh.xml,並將埠從 22 更改為 7890 + firewall-cmd reload

我還在firewalld中使更改永久化:

firewall-cmd --zone=public --add-port=7890/tcp --permanent

當我嘗試從不同的 VPS 通過 SSH 登錄到新的 CentOS 7 機器時,問題就出現了。更改埠號後,從初始 VPS 登錄仍然有效,但沒有新機器可以連接到 CentOS 7 機器。

我得到的錯誤是:

ssh: connect to host 11.22.33.44 port 7890: Connection timed out

這是我的輸出ss -ntulp

tcp   LISTEN     0      128      *:7890          *:*      users:(("sshd",5566,3))

問題是,如果我將 SSH 埠更改回預設的 22 值,那麼每台機器都可以毫無問題地連接到它(在我編輯兩個文件ssh.xmlsshd_config預設的 22 埠之後)。

一定有什麼我錯過或做錯了。有人可以指出我正確的方向嗎?

謝謝你。

似乎我在 CSF + LFD 中找到了一些東西,因為我們所有無法連接的機器都在使用它們。正如@BaZZiliO 在評論中所建議的那樣,在 SSH 客戶端上的允許規則中添加額外的 IP 和埠不會有幫助(已經嘗試過 - 仍然無法連接)。重新啟動 lfd + csf 讓我可以立即連接:

service lfd restart  
csf -r

我之所以沒有想到在 SSH 客戶端上禁用或重啟防火牆,是因為它最初執行正常,所以我認為是配置問題。

至於問題中寫的 CentOS 7 配置,它們是正確的並且功能正常,因此它們適合用於配置測試目的(不建議在沒有進一步安全配置的生產環境中使用)。

謝謝大家的幫助,我希望有人能從這次討論中受益。

問候。

聽起來即使您說您已禁用 SELinux,但您可能還沒有。單獨編輯/etc/sysconfig/selinux不足以禁用它,您需要重新啟動才能使其生效(或 issue setenforce 0)。

無論如何,如果這是真的,那麼 SELinux 會阻止非標準 SSH 埠 (7890) 接受連接。要啟用它,您必須重新標記埠,如下所示:

semanage port -a -t ssh_port_t -p tcp 7890

之後,您的 SSH 連接可能會按預期工作。

想想有些人說“你為什麼要這樣做?” 正在說 - 使用非標準 SSH 埠充其量是通過默默無聞的安全性。確保在服務開始工作後進一步強化服務。

引用自:https://serverfault.com/questions/722042