chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解SSH服務(wù)器的安全配置方法

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2026-05-06 11:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景與問(wèn)題

SSH(Secure Shell)是 Linux 系統(tǒng)遠(yuǎn)程管理的首選協(xié)議,幾乎所有服務(wù)器的遠(yuǎn)程管理都依賴 SSH。從簡(jiǎn)單的命令行登錄到文件傳輸(SFTP)、端口轉(zhuǎn)發(fā)、遠(yuǎn)程命令執(zhí)行,SSH 是運(yùn)維工程師每天都要使用的核心工具。

然而,SSH 默認(rèn)配置存在安全隱患:默認(rèn)端口 22 面臨大量暴力破解攻擊;允許密碼認(rèn)證容易被暴力破解或密碼泄露;允許 root 直接登錄風(fēng)險(xiǎn)極高;SSH 密鑰默認(rèn)沒(méi)有設(shè)置過(guò)期機(jī)制。 另一方面,很多運(yùn)維人員在配置 SSH 安全策略時(shí)過(guò)于激進(jìn),禁用了所有登錄方式或刪除了所有備份方法,結(jié)果在網(wǎng)絡(luò)波動(dòng)或配置失誤時(shí)把自己鎖在系統(tǒng)外面。

本文詳細(xì)講解 SSH 的安全配置方法,同時(shí)提供防止把自己鎖在系統(tǒng)外面的保障措施。內(nèi)容包括 SSH 協(xié)議原理、認(rèn)證方式配置、密鑰管理、網(wǎng)絡(luò)層防護(hù)、配置文件詳解、常見(jiàn)錯(cuò)誤分析和應(yīng)急恢復(fù)方法。

1 SSH 協(xié)議基礎(chǔ)

1.1 SSH 協(xié)議版本

SSH 有兩個(gè)主要版本:SSHv1 和 SSHv2。目前 SSHv1 已完全廢棄,所有現(xiàn)代系統(tǒng)都使用 SSHv2。SSHv2 相比 SSHv1 有顯著的安全改進(jìn),包括更強(qiáng)的加密算法(AES、ChaCha20)、完整的密鑰交換協(xié)議(Diffie-Hellman)、支持公鑰認(rèn)證和證書(shū)。

查看 SSH 版本:

# 查看 SSH 客戶端版本
ssh -V

# 查看 SSH 服務(wù)器版本
sshd -V

# 測(cè)試 SSH 連接使用的協(xié)議版本
ssh -1 user@host # 應(yīng)該失敗
ssh -2 user@host # 使用 SSHv2

1.2 SSH 連接過(guò)程

SSH 連接建立分為幾個(gè)階段:首先是 TCP 握手建立連接;然后是協(xié)議版本交換;接著是密鑰交換階段(Diffie-Hellman 或 ECDH);然后是服務(wù)器認(rèn)證(服務(wù)器證明自己的身份);然后是用戶認(rèn)證(密碼、公鑰或其他方式);最后是會(huì)話建立,可以執(zhí)行命令。

理解這個(gè)過(guò)程有助于排查 SSH 連接問(wèn)題:

# 詳細(xì)查看 SSH 連接過(guò)程
ssh -vvv user@host

# 輸出分為三段:debug1(連接和密鑰交換)、debug2(認(rèn)證過(guò)程)、debug3(會(huì)話建立)

1.3 SSH 密鑰類型

現(xiàn)代 SSH 支持多種密鑰類型:RSA 是最廣泛支持的類型,推薦使用 4096 位;Ed25519 是現(xiàn)代算法,安全性和性能都很好,推薦使用;ECDSA 依賴曲線參數(shù),不同實(shí)現(xiàn)可能存在兼容性問(wèn)題。

生成 SSH 密鑰:

# 生成 RSA 密鑰(2048 位,兼容性好)
ssh-keygen -t rsa -b 4096 -C"your_email@example.com"

# 生成 Ed25519 密鑰(推薦,性能好,密鑰短)
ssh-keygen -t ed25519 -C"your_email@example.com"

# 生成 ECDSA 密鑰
ssh-keygen -t ecdsa -b 521 -C"your_email@example.com"

# 指定密鑰存放位置
ssh-keygen -t ed25519 -f ~/.ssh/my_server_key -C"my_server"

# 添加密碼保護(hù)
ssh-keygen -t ed25519 -o -a 100 -C"your_email@example.com"
# -o 參數(shù)使用 OpenSSH 新格式(更安全)
# -a 參數(shù)指定密鑰推導(dǎo)次數(shù),越高越安全但越慢

2 SSH 服務(wù)器配置

2.1 配置文件位置

SSH 服務(wù)器配置文件位于/etc/ssh/sshd_config,客戶端配置位于~/.ssh/config。本文重點(diǎn)講解服務(wù)器端配置。

配置文件的語(yǔ)法規(guī)則:使用空格分隔的鍵值對(duì);以#開(kāi)頭的是注釋;空行被忽略;每個(gè)配置項(xiàng)一行。

# 查看默認(rèn)配置
man sshd_config

# 查看當(dāng)前生效的配置
sshd -T

# 檢查配置語(yǔ)法(不實(shí)際重啟服務(wù))
sshd -t

# 測(cè)試配置文件并顯示會(huì)生效的配置
sshd -T -C user=root,host=localhost,addr=127.0.0.1

2.2 核心安全配置項(xiàng)

以下配置項(xiàng)直接影響 SSH 的安全性:

# 編輯 SSH 服務(wù)器配置
vim /etc/ssh/sshd_config

# 建議的配置:

# 1. 更改默認(rèn)端口(減少自動(dòng)化攻擊)
Port 2222

# 2. 禁用 SSHv1(已廢棄,不安全)
Protocol 2

# 3. 監(jiān)聽(tīng)特定地址(如果有多個(gè)網(wǎng)卡,指定只監(jiān)聽(tīng)內(nèi)網(wǎng))
ListenAddress 0.0.0.0
# 或只監(jiān)聽(tīng)特定 IP
ListenAddress 192.168.1.1

# 4. 禁用空密碼
PermitEmptyPasswords no

# 5. 禁用密碼認(rèn)證(強(qiáng)烈推薦,使用密鑰認(rèn)證)
PasswordAuthentication no
ChallengeResponseAuthentication no

# 6. 禁用 root 直接登錄
PermitRootLogin no

# 7. 限制允許登錄的用戶
AllowUsers admin deploy@192.168.1.0/24
AllowGroups sshusers

# 8. 禁用 hosts.equiv 和 .rhosts
IgnoreRhosts yes
HostbasedAuthentication no

# 9. 禁用 GSSAPI 認(rèn)證(減少攻擊面)
GSSAPIAuthentication no

# 10. 啟用公鑰認(rèn)證
PubkeyAuthentication yes

# 11. 設(shè)置空閑超時(shí)
ClientAliveInterval 300
ClientAliveCountMax 2

# 12. 設(shè)置登錄嘗試限制(配合 Fail2Ban 使用)
MaxAuthTries 3
MaxSessions 10

# 13. 設(shè)置空閑連接斷開(kāi)時(shí)間
LoginGraceTime 30

# 14. 禁用用戶環(huán)境
PermitUserEnvironment no

# 15. 禁用 .rhosts 文件
IgnoreUserKnownHosts yes

# 16. 打印 motd(可選)
PrintMotd no

# 17. 禁用 TCP 轉(zhuǎn)發(fā)
DisableForwarding yes

# 18. 禁用 X11 轉(zhuǎn)發(fā)(如果不是必要)
X11Forwarding no

# 19. 限制子系統(tǒng)(如 SFTP)
Subsystem sftp internal-sftp -l INFO

# 20. 配置 SFTP 用戶的 chroot
Match Group sftpusers
  ChrootDirectory /var/sftp
  ForceCommand internal-sftp
  AllowTcpForwarding no
  X11Forwarding no

2.3 編輯完配置后驗(yàn)證

修改 SSH 配置后,必須驗(yàn)證配置正確才能重啟服務(wù):

# 1. 檢查配置語(yǔ)法
sshd -t

# 2. 如果沒(méi)有錯(cuò)誤輸出,說(shuō)明語(yǔ)法正確

# 3. 查看會(huì)生效的配置(詳細(xì))
sshd -T | grep -E"^passwordauthentication|^permitrootlogin|^pubkeyauthentication"

# 4. 重啟 SSH 服務(wù)
systemctl restart sshd
systemctl restart ssh

# 5. 確認(rèn)服務(wù)狀態(tài)
systemctl status sshd

3 公鑰認(rèn)證配置

3.1 公鑰認(rèn)證原理

公鑰認(rèn)證基于非對(duì)稱加密:客戶端持有私鑰,公鑰放在服務(wù)器上;登錄時(shí),客戶端用自己的私鑰簽名一段隨機(jī)數(shù)據(jù);服務(wù)器用對(duì)應(yīng)的公鑰驗(yàn)證簽名;驗(yàn)證通過(guò)則允許登錄。

優(yōu)點(diǎn):不會(huì)被暴力破解(私鑰無(wú)法通過(guò)猜測(cè)獲得);無(wú)需在網(wǎng)絡(luò)中傳輸密碼;可以禁用密碼認(rèn)證,消除密碼泄露風(fēng)險(xiǎn);私鑰可以設(shè)置密碼保護(hù)。

3.2 配置服務(wù)器接受公鑰認(rèn)證

# 服務(wù)器端配置
# /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# 限制 authorized_keys 文件的權(quán)限
# 服務(wù)器端應(yīng)確保
# .ssh 目錄權(quán)限 700
# authorized_keys 文件權(quán)限 600

3.3 用戶端配置和管理

# 生成密鑰對(duì)
ssh-keygen -t ed25519

# 將公鑰復(fù)制到服務(wù)器(最簡(jiǎn)單的方式)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host

# 手動(dòng)復(fù)制公鑰
cat ~/.ssh/id_ed25519.pub | ssh user@host"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# 服務(wù)器端設(shè)置權(quán)限
ssh user@host"chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

# 驗(yàn)證權(quán)限是否正確
ssh user@host"ls -la ~/.ssh/"

3.4 管理 authorized_keys

# 查看用戶的 authorized_keys
ssh user@host"cat ~/.ssh/authorized_keys"

# 添加多個(gè)公鑰(可以是不同用戶、不同機(jī)器的)
ssh user@host"cat >> ~/.ssh/authorized_keys"< ~/.ssh/new_key.pub

# 從 authorized_keys 中刪除某個(gè)公鑰
ssh user@host?"grep -v 'ssh-rsa AAAAB3...' ~/.ssh/authorized_keys > /tmp/auth_keys && mv /tmp/auth_keys ~/.ssh/authorized_keys"

# 批量管理腳本
#!/bin/bash
# 添加多個(gè)用戶的公鑰到同一個(gè)賬號(hào)

AUTH_KEYS_FILE="$HOME/.ssh/authorized_keys"
USER_KEYS_DIR="$HOME/.ssh/user_keys"

mkdir -p"$USER_KEYS_DIR"

# 為每個(gè)用戶創(chuàng)建子目錄
foruserinalice bob charlie;do
  mkdir -p"$USER_KEYS_DIR/$user"
done

# 合并所有公鑰(包含注釋區(qū)分來(lái)源)
{
 echo"# Alice's keys"
  cat"$USER_KEYS_DIR/alice/"*.pub 2>/dev/null
 echo"# Bob's keys"
  cat"$USER_KEYS_DIR/bob/"*.pub 2>/dev/null
} >"$AUTH_KEYS_FILE"

4 防止把自己鎖在系統(tǒng)外面

4.1 修改 SSH 配置前的準(zhǔn)備工作

修改 SSH 配置前,必須確保不會(huì)把自己鎖在外面。正確的操作順序:

第一步,創(chuàng)建一個(gè)備份會(huì)話。在修改配置前,先開(kāi)一個(gè) SSH 會(huì)話并保持不退出。這個(gè)會(huì)話作為緊急恢復(fù)通道。

第二步,備份原配置文件:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup.$(date +%Y%m%d)
cp /etc/ssh/sshd_config /root/sshd_config.backup

第三步,使用sshd -t驗(yàn)證配置語(yǔ)法:

sshd -t
# 如果沒(méi)有輸出,說(shuō)明語(yǔ)法正確

第四步,準(zhǔn)備遠(yuǎn)程恢復(fù)方法。如果有控制臺(tái)訪問(wèn)(云平臺(tái)的控制臺(tái)、IPMI、iLO、DRAC),確??梢赃h(yuǎn)程登錄。記錄下控制臺(tái)登錄信息。

4.2 分步修改配置

不要一次性做多個(gè)修改,每次只改一個(gè),確認(rèn)生效后再改下一個(gè):

# 步驟一:只修改端口,保持其他配置不變
# 編輯 /etc/ssh/sshd_config
Port 2222

# 驗(yàn)證并重啟
sshd -t && systemctl restart sshd

# 用新端口測(cè)試連接(保持舊會(huì)話不退出)
ssh -p 2222 user@host

# 確認(rèn)新端口工作正常后,再進(jìn)行下一步

4.3 使用 ansible 或腳本批量修改

批量修改多臺(tái)服務(wù)器的 SSH 配置時(shí),使用配置管理工具可以減少出錯(cuò)概率:

# ansible 批量修改 SSH 配置
ansible all -i inventory -m lineinfile 
  -a"path=/etc/ssh/sshd_config 
    regexp='^Port' 
    line='Port 2222'"

# 驗(yàn)證配置
ansible all -i inventory -mcommand-a"sshd -t"

# 重啟服務(wù)
ansible all -i inventory -m systemd -a"name=sshd state=restarted"

4.4 設(shè)置 PermitRootLogin 的正確順序

禁用 root 登錄是高風(fēng)險(xiǎn)操作,必須確保有替代方案:

# 第一步:創(chuàng)建替代的 sudo 用戶
useradd -m -s /bin/bash admin
usermod -aG sudo admin

# 第二步:為該用戶配置 SSH 公鑰登錄
ssh-copy-id admin@host

# 第三步:測(cè)試該用戶能否 sudo 到 root
ssh admin@host
sudo -i

# 第四步:確認(rèn)可以 sudo 后,再禁用 root 登錄
# 編輯 /etc/ssh/sshd_config
PermitRootLogin no

# 第五步:保留一個(gè)可用的 root 登錄方式(物理控制臺(tái)或帶外管理)

4.5 使用 Fail2Ban 防護(hù)暴力破解

Fail2Ban 可以自動(dòng)封禁多次登錄失敗的 IP:

# 安裝 Fail2Ban
apt-get install fail2ban # Debian/Ubuntu
yum install fail2ban   # RHEL/CentOS

# 配置 Fail2Ban
cat > /etc/fail2ban/jail.local <

4.6 緊急恢復(fù)方法

如果不幸被鎖在系統(tǒng)外面,按以下步驟恢復(fù):

方法一:通過(guò)控制臺(tái)登錄(云服務(wù)器)

大多數(shù)云平臺(tái)提供網(wǎng)頁(yè)版控制臺(tái),可以直接用 root 或其他用戶登錄,然后修復(fù) SSH 配置。

方法二:通過(guò)云平臺(tái)的用戶數(shù)據(jù)腳本

某些云平臺(tái)支持在實(shí)例啟動(dòng)時(shí)執(zhí)行用戶數(shù)據(jù)腳本,可以用來(lái)修復(fù) SSH 配置。

方法三:通過(guò)修改啟動(dòng)參數(shù)進(jìn)入單用戶模式

重啟服務(wù)器,在 GRUB 菜單按e編輯啟動(dòng)參數(shù),在linux行末尾添加single或init=/bin/bash,以單用戶模式啟動(dòng),然后掛載根分區(qū)為可寫(xiě),修復(fù) SSH 配置。

方法四:通過(guò)云平臺(tái)的"救援模式"

大多數(shù)云平臺(tái)提供救援模式,可以從 ISO 啟動(dòng),掛載原系統(tǒng)磁盤,修改 SSH 配置。

# 以 DigitalOcean 為例
# 1. 在控制臺(tái)創(chuàng)建快照
# 2. 從快照創(chuàng)建新 droplet,選救援模式
# 3. 掛載原磁盤
mount /dev/vda1 /mnt
# 4. 編輯 SSH 配置
vim /mnt/etc/ssh/sshd_config
# 5. 卸載磁盤
umount /mnt
# 6. 從原快照創(chuàng)建新 droplet

5 密鑰管理最佳實(shí)踐

5.1 密鑰存儲(chǔ)和權(quán)限

# 密鑰文件權(quán)限(非常重要)
# 私鑰權(quán)限必須是 600
chmod 600 ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_rsa

# 公鑰可以是 644
chmod 644 ~/.ssh/id_ed25519.pub

# .ssh 目錄權(quán)限必須是 700
chmod 700 ~/.ssh

# 服務(wù)器端 authorized_keys 權(quán)限必須是 600
chmod 600 ~/.ssh/authorized_keys

# 用戶目錄不能讓其他人有寫(xiě)權(quán)限
chmod go-w ~/

5.2 密鑰輪換策略

定期更換密鑰是良好的安全習(xí)慣:

# 創(chuàng)建新密鑰
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_2024 -C"rotation 2024"

# 在服務(wù)器端添加新公鑰
ssh user@host"cat >> ~/.ssh/authorized_keys"< ~/.ssh/id_ed25519_2024.pub

# 測(cè)試新密鑰可以登錄
ssh -i ~/.ssh/id_ed25519_2024 user@host

# 確認(rèn)新密鑰工作后,從 authorized_keys 中移除舊公鑰
ssh user@host?"grep -v 'old_key_comment' ~/.ssh/authorized_keys > /tmp/auth && mv /tmp/auth ~/.ssh/authorized_keys"

# 本地刪除舊私鑰
mv ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.old

5.3 使用 SSH Agent 轉(zhuǎn)發(fā)

SSH Agent 可以緩存解密后的私鑰,避免重復(fù)輸入密碼:

# 啟動(dòng) SSH Agent
eval"$(ssh-agent -s)"

# 添加密鑰到 Agent
ssh-add ~/.ssh/id_ed25519

# 查看 Agent 中的密鑰
ssh-add -l

# 密鑰轉(zhuǎn)發(fā)(從跳板機(jī)跳轉(zhuǎn)到內(nèi)網(wǎng)機(jī)器,保留密鑰訪問(wèn)能力)
# 在 .ssh/config 中配置
Host jump-server
  HostName jumphost.example.com
  User admin
  Port 2222
  ForwardAgent yes

# 或者使用 -A 參數(shù)
ssh -A admin@jumphost.example.com

5.4 使用 config 文件管理多服務(wù)器

# ~/.ssh/config 示例
# 可以為每個(gè)服務(wù)器定義獨(dú)立的配置

# 默認(rèn)配置
Host *
  Port 2222
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 300
  ServerAliveCountMax 2
  StrictHostKeyChecking ask

# 生產(chǎn)服務(wù)器
Host prod-*
  HostName %h.example.com
  User admin
  ForwardAgent no
  LogLevel INFO

# 跳板機(jī)
Host jump
  HostName jumphost.example.com
  User admin
  Port 2222
  ForwardAgent yes

# 數(shù)據(jù)庫(kù)服務(wù)器(只能從跳板機(jī)訪問(wèn))
Host db-1
  HostName 192.168.1.100
  User dbadmin
  ProxyJump jump
  LocalForward 3306 127.0.0.1:3306

# 免密碼快捷登錄
Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/github_ed25519

6 連接問(wèn)題排查

6.1 常見(jiàn)連接錯(cuò)誤及解決

錯(cuò)誤一:Connection refused

# 檢查 SSH 服務(wù)是否運(yùn)行
systemctl status sshd

# 檢查端口是否監(jiān)聽(tīng)
ss -tlnp | grep sshd
netstat -tlnp | grep sshd

# 檢查防火墻規(guī)則
iptables -L -n | grep 22
ufw status
firewall-cmd --list-all

錯(cuò)誤二:Permission denied

# 檢查用戶名是否正確
ssh user@host

# 檢查密鑰是否正確配置
ssh -vvv user@host # 查看詳細(xì)認(rèn)證過(guò)程

# 檢查服務(wù)器日志
tail -f /var/log/auth.log
journalctl -u sshd -f

# 客戶端指定密鑰
ssh -i ~/.ssh/specific_key user@host

錯(cuò)誤三:Connection timeout

# 檢查網(wǎng)絡(luò)連通性
ping -c 4 host
traceroute host # Linux
tracert host  # Windows

# 檢查端口是否可達(dá)
nc -zv host 22
telnet host 22

# 檢查是否有 ACL 限制
ssh -b bind_ip user@host

6.2 查看詳細(xì)連接日志

# 客戶端查看詳細(xì)日志
ssh -vvv user@host

# 服務(wù)器端查看實(shí)時(shí)日志
tail -f /var/log/auth.log
journalctl -u sshd -f

# 調(diào)試 SSH 握手
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@host

6.3 檢查 SSH 服務(wù)狀態(tài)

# 查看服務(wù)狀態(tài)
systemctl status sshd

# 查看監(jiān)聽(tīng)端口
ss -tlnp | grep sshd

# 測(cè)試本地 SSH 連接
ssh localhost

# 檢查 SELinux 上下文(RHEL/CentOS)
getsebool -a | grep ssh
setsebool -P ssh_sysadm_login on

7 完整的 SSH 安全加固腳本

#!/bin/bash
# ssh_hardening.sh - SSH 安全加固腳本

set-euo pipefail

BACKUP_DIR="/root/ssh_backups"
mkdir -p"$BACKUP_DIR"

backup_config() {
  cp /etc/ssh/sshd_config"${BACKUP_DIR}/sshd_config.$(date +%Y%m%d_%H%M%S)"
 echo"Backup created in$BACKUP_DIR"
}

verify_sudo() {
 if["$(id -u)"-ne 0 ];then
   echo"This script must be run as root"
   exit1
 fi
}

verify_admin_user() {
 if! id admin &>/dev/null;then
   echo"Creating admin user..."
    useradd -m -s /bin/bash admin
    usermod -aG sudo admin
 fi

 if[ ! -f"/home/admin/.ssh/authorized_keys"];then
   echo"WARNING: admin user has no SSH keys configured!"
   echo"Please add your public key to /home/admin/.ssh/authorized_keys before continuing"
   read-p"Press Enter to continue anyway..."
 fi
}

apply_config() {
  cat > /etc/ssh/sshd_config <<'EOF'
# SSH Server Configuration
Port 2222
Protocol 2

ListenAddress 0.0.0.0

# Authentication
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitEmptyPasswords no
MaxAuthTries 3
LoginGraceTime 30

# Security
IgnoreRhosts yes
HostbasedAuthentication no
?PermitUserEnvironment no
PrintMotd no
TCPKeepAlive yes

# Idle timeout
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable unused features
X11Forwarding no
AllowTcpForwarding no
PermitTunnel no
AllowAgentForwarding no

# SFTP configuration
Subsystem sftp internal-sftp -l INFO

# Override for SFTP users
Match Group sftpusers
? ? ChrootDirectory /var/sftp
? ? ForceCommand internal-sftp
? ? AllowTcpForwarding no
? ? X11Forwarding no
EOF
? ??echo?"Configuration applied"
}

set_permissions() {
? ? chmod 644 /etc/ssh/sshd_config

? ??# 確保 admin 用戶目錄權(quán)限正確
? ? chown -R admin:admin /home/admin/.ssh
? ? chmod 700 /home/admin/.ssh
? ? chmod 600 /home/admin/.ssh/authorized_keys
}

verify_config() {
? ??echo?"Verifying configuration..."
? ? sshd -t &&?echo?"Configuration syntax OK"
}

restart_service() {
? ??echo?"Restarting SSH service..."
? ? systemctl restart sshd
? ? systemctl status sshd --no-pager
}

main() {
? ??echo?"SSH Security Hardening Script"
? ??echo?"============================"

? ? verify_sudo
? ? verify_admin_user
? ? backup_config
? ? apply_config
? ? set_permissions
? ? verify_config

? ??echo?""
? ??echo?"IMPORTANT: Keep your current SSH session open!"
? ??echo?"Test a new connection before closing this session!"
? ??echo?""

? ??read?-p?"Restart SSH service now? (yes/no): "?confirm
? ??if?[?"$confirm"?=?"yes"?];?then
? ? ? ? restart_service
? ? ? ??echo?"SSH service restarted. Please test a new connection."
? ??else
? ? ? ??echo?"Service restart skipped. Run 'systemctl restart sshd' manually when ready."
? ??fi
}

main?"$@"

8 結(jié)論

SSH 安全配置需要在安全性和可用性之間取得平衡。過(guò)度限制的配置可能導(dǎo)致自己無(wú)法登錄,合理的安全配置應(yīng)該既能防止攻擊,又能保證管理員正常訪問(wèn)。

核心安全配置建議:更改默認(rèn)端口減少自動(dòng)化攻擊;禁用密碼認(rèn)證,使用公鑰認(rèn)證;禁用 root 直接登錄,使用 sudo;配置 Fail2Ban 防止暴力破解;定期輪換 SSH 密鑰。

防止把自己鎖在外面的關(guān)鍵:在修改配置前先備份;保持一個(gè)不退出 SSH 會(huì)話作為恢復(fù)通道;分步驟修改配置,每步確認(rèn)后再進(jìn)行下一步;使用控制臺(tái)或帶外管理作為最終恢復(fù)手段。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11825

    瀏覽量

    219617
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10377

    瀏覽量

    91777
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    1113

    瀏覽量

    34052
  • SSH
    SSH
    +關(guān)注

    關(guān)注

    0

    文章

    201

    瀏覽量

    17827

原文標(biāo)題:SSH 安全配置怎么做,才能既安全又不把自己鎖在門外?

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何實(shí)現(xiàn)SSH服務(wù)器?

    你好,有人已經(jīng)實(shí)現(xiàn)了SSH(2版)服務(wù)器嗎?你好嗎?SSH只是帶有SSL的telnet,還是有其他的東西有一個(gè)基本的SSH服務(wù)器?如何實(shí)施S
    發(fā)表于 03-24 10:14

    VScode終端ssh連接不到Linux服務(wù)器問(wèn)題

    在VScode終端用ssh連接Linux服務(wù)器無(wú)法識(shí)別ssh1. 在網(wǎng)上下載了一個(gè)Git進(jìn)行Linux連接,發(fā)現(xiàn)輸入密碼拒絕訪問(wèn),還是連接不上。2. 然后在VScode里面下載了個(gè)插件Remote-
    發(fā)表于 11-21 16:26

    服務(wù)器集群系統(tǒng)實(shí)現(xiàn)方案詳解

    服務(wù)器集群系統(tǒng)實(shí)現(xiàn)方案詳解 一、集群的基本概念     有一種常見(jiàn)的方法可以大幅提高服務(wù)器安全
    發(fā)表于 01-27 17:03 ?961次閱讀

    設(shè)置面向LSF 和SSH 的遠(yuǎn)程服務(wù)器群設(shè)備

    使用 DSE II 在 Quartus Prime 中設(shè)置面向 LSF 和SSH 的遠(yuǎn)程服務(wù)器群設(shè)備
    的頭像 發(fā)表于 06-22 04:37 ?5215次閱讀
    設(shè)置面向LSF 和<b class='flag-5'>SSH</b> 的遠(yuǎn)程<b class='flag-5'>服務(wù)器</b>群設(shè)備

    以色列政府DNS服務(wù)器存在著Open SSH安全漏洞

    安全研究人員Eitan Caspi最近檢查了gov.il子域的HTTPS站點(diǎn)是否有安全問(wèn)題,結(jié)果他在以色列政府DNS服務(wù)器上發(fā)現(xiàn)了一個(gè)開(kāi)放的Open SSH訪問(wèn)。
    發(fā)表于 02-12 14:41 ?1275次閱讀

    服務(wù)器的基本配置_服務(wù)器配置怎么看

    本文主要闡述了服務(wù)器的基本配置服務(wù)器配置的查看方法。
    的頭像 發(fā)表于 07-24 10:16 ?3.6w次閱讀
    <b class='flag-5'>服務(wù)器</b>的基本<b class='flag-5'>配置</b>_<b class='flag-5'>服務(wù)器</b>的<b class='flag-5'>配置</b>怎么看

    ssh如何上傳文件到服務(wù)器

    下面恒訊科技小編將跟大家探討一下ssh如何上傳文件到服務(wù)器的呢? 一、什么是SSH? SSH是一種安全的網(wǎng)絡(luò)協(xié)議,它允許您通過(guò)在不
    的頭像 發(fā)表于 02-16 17:21 ?1.7w次閱讀

    Linux上保護(hù) SSH 服務(wù)器連接的方法

    SSH 是一種廣泛使用的協(xié)議,用于安全地訪問(wèn) Linux 服務(wù)器。大多數(shù)用戶使用默認(rèn)設(shè)置的 SSH 連接來(lái)連接到遠(yuǎn)程服務(wù)器
    的頭像 發(fā)表于 08-08 09:55 ?1689次閱讀

    如何提高Linux ssh安全

    ssh 是訪問(wèn)遠(yuǎn)程服務(wù)器最常用的方法之一,同時(shí),其也是 Linux 服務(wù)器受到攻擊的最常見(jiàn)的原因之一。
    的頭像 發(fā)表于 02-25 17:01 ?1851次閱讀

    在Linux上保護(hù)SSH服務(wù)器連接的8種方法

    SSH 是一種廣泛使用的協(xié)議,用于安全地訪問(wèn) Linux 服務(wù)器。大多數(shù)用戶使用默認(rèn)設(shè)置的 SSH 連接來(lái)連接到遠(yuǎn)程服務(wù)器。但是,不
    的頭像 發(fā)表于 04-03 09:37 ?3030次閱讀

    Linux上建立SSH安全連接的10種方法

    建立 SSH 安全連接的方法是通過(guò) SSH (Secure Shell) 協(xié)議建立的加密通道,用于在服務(wù)器和客戶機(jī)之間的
    的頭像 發(fā)表于 05-29 10:29 ?7119次閱讀

    輕量服務(wù)器怎么搭建ssh?

    在搭建輕量服務(wù)器時(shí),我們通常需要設(shè)置SSH登錄,以便能夠通過(guò)SSH客戶端遠(yuǎn)程連接到服務(wù)器。下面是一些簡(jiǎn)單的步驟來(lái)幫助您搭建SSH。 第一步:
    的頭像 發(fā)表于 10-10 09:59 ?1404次閱讀

    深入解析SSH協(xié)議,輕松實(shí)現(xiàn)安全高效的服務(wù)器管理

    過(guò)程中被竊聽(tīng)或篡改。SSH支持多種身份驗(yàn)證方法,包括密碼、公鑰和證書(shū)等,以確保只有授權(quán)用戶能夠訪問(wèn)系統(tǒng)。除了遠(yuǎn)程登錄,SSH還支持文件傳輸和端口轉(zhuǎn)發(fā)等功能,使得SSH成為一種廣泛使用的
    的頭像 發(fā)表于 12-19 13:40 ?1973次閱讀

    如何配置Linux防火墻和Web服務(wù)器

    在當(dāng)今數(shù)字化時(shí)代,網(wǎng)絡(luò)安全顯得尤為重要。Linux作為一種開(kāi)源操作系統(tǒng),廣泛應(yīng)用于服務(wù)器管理和網(wǎng)絡(luò)配置中。本篇文章將詳細(xì)介紹如何配置Linux防火墻和Web
    的頭像 發(fā)表于 05-24 15:26 ?2096次閱讀
    如何<b class='flag-5'>配置</b>Linux防火墻和Web<b class='flag-5'>服務(wù)器</b>

    SSH 遠(yuǎn)程連接內(nèi)網(wǎng) Linux 服務(wù)器

    利用 ZeroNews,您可對(duì)用內(nèi)網(wǎng)的 Linux 服務(wù)器進(jìn)行統(tǒng)一的 SSH 遠(yuǎn)程連接管理,當(dāng)用戶外出時(shí),可通過(guò) ZeroNews 分配的公網(wǎng)域名地址,快速訪問(wèn)企業(yè)內(nèi)部、家庭的 Linux
    的頭像 發(fā)表于 09-17 19:52 ?614次閱讀
    <b class='flag-5'>SSH</b> 遠(yuǎn)程連接內(nèi)網(wǎng) Linux <b class='flag-5'>服務(wù)器</b>