
我透過 SSH 連接到不受我控制的伺服器。
我使用公鑰訪問,不需要能夠使用鍵盤互動密碼進行連接。
我想禁用我的用戶的鍵盤互動訪問,以便其他人無法以這種方式進行駭客攻擊。
由於我不控制伺服器,有沒有辦法設定使用者的設定檔以防止鍵盤互動存取?
答案1
如果您完全無法控制伺服器,我看不出有什麼辦法可以做到這一點,因為您無法控制伺服器設置,而這正是必須的地方。
您需要做的是將其新增至 /etc/ssh/sshd_config 檔案:
PasswordAuthentication no
現在,這將有效地停用密碼身份驗證全部用戶,這可能是不可取的。然後您可以做的就是將此配置指令放在 Match 區塊中,因此它僅適用於您的用戶,在同一個設定檔中:
Match user yourusername
PasswordAuthentication no
如果您可以讓伺服器管理員為您執行此操作,那麼這可能是一個不錯的選擇。
另一種方法是為您的用戶設定一個非常長、隨機且複雜的密碼,這樣您就可以合理地防止隨機暴力破解嘗試。大多數攻擊者可能會使用一些基於字典的技術,因此只要您的密碼足夠長且足夠隨機,它應該非常安全。
有關更多詳細信息,請參閱“man sshd_config”。另外,也建議了我提出的解決方案這裡。
答案2
您只需將文件 from 中的這一行編輯/etc/ssh/sshd_config
為yes
:no
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
答案3
[我假設您使用 BASH 作為登入 shell。如果不是,適當調整...]
在 中~/.ssh/authorized_keys
,在每一行前面新增一個命令規範,如下所示:
command="ssh_key=XXX /bin/bash -l" ssh-dss AAAA...K3E= me@mymachine
在 中~/.bash-profile
,將以下陷阱放在頂部:
if [ "${ssh_key}" != "XXX" ]; then
echo "${SSH_CLIENT}" | mailx -s "password login attempt!" me@mailservice
exit
fi
現在,當有人使用密碼進入您的帳戶時,您只會收到郵件。