【轉】Linux最高權限用戶root,默認可以直接登錄sshd。為了提高服務器的安全度,需要對它進行禁止,使得攻擊者無法通過暴力破解來獲取root權限。
ps: 以下內容皆非原創,只是個人的一個實踐過程的一個記錄,記錄下來一是怕自己忘記,而是給像我那樣的小白,可以一篇搞定服務器安全登錄問題。主要參考了幾個優秀的博客文章,皆在文章后面列出,感謝原創!
一、添加新用戶並且修改sshd 默認端口
1.1 新建用戶
1,新建一個用戶;
#useradd xxx (xxx為你要新建的用戶名)
2,為新用戶設置密碼;
#passwd xxx (xxx為你要新建的用戶名)
3,修改SSHD配置,禁止root直接登錄
#vi /etc/ssh/sshd_config
查找“#PermitRootLogin yes”,將前面的“#”去掉,段末“yes”改為“no”(不同版本可能區分大小寫),並保存文件。
4.為新添加的用戶添加root權限
vi /etc/sudoers
#方法一:將下面#號去掉,保存
#%wheel ALL=(ALL) ALL
修改新添加的用戶,使屬於root組
#usermod -g root xxx
#方法二:直接添加root權限, 直接復制下面root的那行,用戶改成我們新添加的用戶就可以了
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xxx ALL=(ALL) ALL
權限添加完之后,使用xxx用戶登錄操作,提示權限不足的時候,就可以直接sudo啦
注:要是找不到sudoers,那么就先安裝sudo吧 yum install sudo.
1.2修改sshd默認端口
雖然更改端口無法在根本上抵御端口掃描,但是,可以在一定程度上提高防御。
1.打開sshd配置文件
#vi /etc/ssh/sshd_config
2.找到#Port 22字段刪掉#,將22改為其他不被使用的端口
服務器端口最大可以開到65536
3.重啟sshd服務
#service sshd restart
4.別忘了修改登陸工具那的端口設置。
二、為新用戶添加ssh-key登錄,禁止密碼登錄
1. 生成ssh-key
ssh-keygen -t rsa -f test -C "test key" //-f 文件名 -C 備注 -t 類型
2. 上傳公鑰到服務器
ssh-copy-id -i ~/.ssh /id_rsa.pub A@IP_address
//這一步會將公鑰上傳到 A 中的 /home/A/.ssh/authorized_keys
//authorized_keys
文件,是用來存放授權密鑰的
3. 設置服務器公鑰的權限
chmod 400 /home/A/.ssh/authorized_keys #將 authorized_keys 的權限設置為對擁有者只讀,其他用戶沒有任何權限 chattr +i /home/A/.ssh/authorized_keys #保證 authorized_keys 的權限不會被改掉 chattr +i /home/A/.ssh #設置 ~./ssh 的 immutable 位權限, #防止重命名 ~/.ssh ,然后新建新的 ~/.ssh 目錄和 authorized_keys 文件
4. 嘗試使用ssh-key登錄服務器
ssh -i /user/.ssh /id_rsa A@IP_address
#利用 SSH-Key 登陸普通賬戶 A ,看是否成功
5.如果成功登陸 A, 編輯 服務器上面的sshd_config 文件
su root #切換root賬號
vim /etc/ssh/sshd_config #按 i 進入編輯 確保(去掉注釋#) RSAAuthentication yes #允許 RSA 認證 PubkeyAuthentication yes #允許公鑰認證 PermitRootLogin no #禁止 ROOT 登陸 PasswordAuthentication no #禁止密碼登陸 修改端口, 將 #Port 22 改為 Port 端口號數字 #改掉默認端口 按 esc 退出編輯,:wq #保存並退出 sshd_config service sshd restart #重啟 SSH
6.配置本地ssh config,方便登錄。多個 ssh 賬號需要配置,在 config 文件里隔行分開寫就行
vi ~/.ssh/config #在私鑰所在的.ssh 文件夾內新建一個 config 文件 按 i 編輯,復制以下內容 Host vps #這個名字隨意,感覺像調用函數 HostName IP_address #IP 地址或服務器域名 Port XX #服務器端開放的 ssh 端口,第 7 步中改的端口 User A #登錄的用戶名 IdentityFile ~/.ssh/ id_rsa #使用的密鑰文件密鑰文件,本地私鑰地址
Host vps2
…… 按 esc 退出編輯,輸入:wq 退出並保存
#ssh vps 就能直接登錄vps啦!
另外備注一點, github 用ssh下載的話,會發現permison denied!
檢測是由於默認是讀取id_rsa 的秘鑰,我已經命名成了github,所以找不到就一直連不上
把代碼加到緩存ssh-agent 的高速緩存里面
ssh-add ~/.ssh/github
另外一種方法就是在ssh config里面添加我們的github信息
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/work_rsa
測試 ssh - T git@personal 成功
git clone git@personal:MorePainMoreGain/datetimepicker.git #MorePainMoreGain 用戶名 datetimepicker 倉庫名
參考博客:
Linux 0 基礎,在 VPS 上禁止 ROOT 賬戶,禁用密碼登錄,新建普通賬戶 A 並通過 SSH-Key 登陸 A 的方法 (歡迎指正:) OS: OS X 10.10.5