正確的 CentOS 7 SSH 配置
我在更改新 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.xml
to複製到/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.xml
和sshd_config
預設的 22 埠之後)。一定有什麼我錯過或做錯了。有人可以指出我正確的方向嗎?
謝謝你。
似乎我在 CSF + LFD 中找到了一些東西,因為我們所有無法連接的機器都在使用它們。正如@BaZZiliO 在評論中所建議的那樣,在 SSH 客戶端上的允許規則中添加額外的 IP 和埠不會有幫助(已經嘗試過 - 仍然無法連接)。重新啟動 lfd + csf 讓我可以立即連接:
service lfd restart csf -r
我之所以沒有想到在 SSH 客戶端上禁用或重啟防火牆,是因為它最初執行正常,所以我認為是配置問題。
至於問題中寫的 CentOS 7 配置,它們是正確的並且功能正常,因此它們適合用於配置測試目的(不建議在沒有進一步安全配置的生產環境中使用)。
謝謝大家的幫助,我希望有人能從這次討論中受益。
問候。
聽起來即使您說您已禁用 SELinux,但您可能還沒有。單獨編輯
/etc/sysconfig/selinux
不足以禁用它,您需要重新啟動才能使其生效(或 issuesetenforce 0
)。無論如何,如果這是真的,那麼 SELinux 會阻止非標準 SSH 埠 (7890) 接受連接。要啟用它,您必須重新標記埠,如下所示:
semanage port -a -t ssh_port_t -p tcp 7890
之後,您的 SSH 連接可能會按預期工作。
想想有些人說“你為什麼要這樣做?” 正在說 - 使用非標準 SSH 埠充其量是通過默默無聞的安全性。確保在服務開始工作後進一步強化服務。