密碼登錄很方便,因為你可以從任何地方的任何機器上登錄。但是它們在暴力攻擊面前也是脆弱的。嘗試以下策略來強化你的密碼登錄。
當我的 ssh 登錄失敗,並顯示“Too many authentication failures for carla”的報錯信息時,我很難過。我知道我應該不介意,但是這報錯確實很礙眼。而且,正如我聰慧的奶奶曾經說過,傷痛之感並不能解決問題。解決辦法就是在你的(客戶端的)
~/.ssh/config
文件設置強制密碼登錄。如果這個文件不存在,首先創個
~/.ssh/
目錄。
$ mkdir ~/.ssh$ chmod 700 ~/.ssh
然後在一個文本編輯器創建
~/.ssh/confg
文件,輸入以下行,使用你自己的遠程域名替換 HostName。
HostName remote.site.comPubkeyAuthentication=no
(LCTT 譯注:這種錯誤發生在你使用一台 Linux 機器使用 ssh 登錄另外一台服務器時,你的 .ssh 目錄中存儲了過多的私鑰文件,而 ssh 客戶端在你沒有指定 -i 選項時,會默認逐一嘗試使用這些私鑰來登錄遠程服務器後才會提示密碼登錄,如果這些私鑰並不能匹配遠程主機,顯然會觸發這樣的報錯,甚至拒絕連接。因此本條是通過禁用本地私鑰的方式來強制使用密碼登錄——顯然這並不可取,如果你確實要避免用私鑰登錄,那你應該用 -o PubkeyAuthentication=no 選項登錄。顯然這條和下兩條是互相矛盾的,所以請無視本條即可。)
使用公鑰認證公鑰認證比密碼登錄安全多了,因為它不受暴力密碼攻擊的影響,但是並不方便因為它依賴於 RSA 密鑰對。首先,你要創建一個公鑰/私鑰對。下一步,私鑰放於你的客戶端電腦,並且復制公鑰到你想登錄的遠程服務器。你只能從擁有私鑰的電腦登錄才能登錄到遠程服務器。你的私鑰就和你的家門鑰匙一樣敏感;任何人獲取到了私鑰就可以獲取你的賬號。你可以給你的私鑰加上密碼來增加一些強化保護規則。
使用 RSA 密鑰對管理多個用戶是一種好的方法。當一個用戶離開了,只要從服務器刪了他的公鑰就能取消他的登錄。
以下例子創建一個新的 3072 位長度的密鑰對,它比默認的 2048 位更安全,而且為它起一個獨一無二的名字,這樣你就可以知道它屬於哪個服務器。
$ ssh-keygen -t rsa -b 3072 -f id_mailserver
以下創建兩個新的密鑰,
id_mailserver
和
id_mailserver.pub
id_mailserver
是你的私鑰--不要傳播它!現在用
ssh-copy-id
命令安全地復制你的公鑰到你的遠程服務器。你必須確保在遠程服務器上有可用的 SSH 登錄方式。
$ ssh-copy-id -i id_rsa.pub user@remoteserver/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installeduser@remoteserver's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh 'user@remoteserver'"and check to make sure that only the key(s) you wanted were added.
ssh-copy-id 會確保你不會無意間復制了你的私鑰。從上述輸出中復制登錄命令,記得帶上其中的單引號,以測試你的新的密鑰登錄。
$ ssh 'user@remoteserver'
它將用你的新密鑰登錄,如果你為你的私鑰設置了密碼,它會提示你輸入。
取消密碼登錄一旦你已經測試並且驗證了你的公鑰可以登錄,就可以取消密碼登錄,這樣你的遠程服務器就不會被暴力密碼攻擊。如下設置你的遠程服務器的
/etc/sshd_config
文件。
PasswordAuthentication no
然後重啟服務器上的 SSH 守護進程。
設置別名 -- 這很快捷而且很酷你可以為你的遠程登錄設置常用的別名,來替代登錄時輸入的命令,例如
ssh -u username -p 2222 remote.site.with.long-name
你可以使用
ssh remote1
你的客戶端機器上的 ~/.ssh/config文件可以參照如下設置
Host remote1HostName remote.site.with.long-namePort 2222User usernamePubkeyAuthentication no
如果你正在使用公鑰登錄,可以參照這個:
Host remote1HostName remote.site.with.long-namePort 2222User usernameIdentityFile ~/.ssh/id_remoteserver
OpenSSH 文檔 很長而且詳細,但是當你掌握了基礎的 SSH 使用規則之後,你會發現它非常的有用,而且包含很多可以通過 OpenSSH 來實現的炫酷效果。
原文來自:https://linux.cn:443/article-7683-1.html
本文地址:http://www.linuxprobe.com/five-safety-advice.html
http://xxxxxx/Linuxjc/1155998.html TechArticle