
前言
無論是個人的VPS還是企業(yè)允許公網(wǎng)訪問的服務(wù)器了牛,如果開放22端口的SSH密碼登錄驗證方式颜屠,被眾多黑客暴力猜解捅破菊花也可能是經(jīng)常發(fā)生的慘劇。企業(yè)可以通過防火墻來做限制鹰祸,普通用戶也可能借助修改22端口和強化弱口令等方式防護甫窟,但目前相對安全和簡單的方案則是讓SSH使用密鑰登錄并禁止口令登錄。
這是最相對安全的登錄管理方式
更新歷史
2015年07月07日 - 初稿
閱讀原文 - http://wsgzao.github.io/post/ssh/
擴展閱讀
- SSH原理與運用 - http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
- Linode - https://www.linode.com/docs/networking/ssh/use-public-key-authentication-with-ssh
生成PublicKey
建議設(shè)置并牢記passphrase密碼短語福荸,以Linux生成為例
Linux:ssh-keygen -t rsa
[私鑰 (id_rsa) 與公鑰 (id_rsa.pub)]
Windows:SecurCRT/Xshell/PuTTY
[SSH-2 RSA 2048]
#生成SSH密鑰對
ssh-keygen -t rsa
Generating public/private rsa key pair.
#建議直接回車使用默認路徑
Enter file in which to save the key (/root/.ssh/id_rsa):
#輸入密碼短語(留空則直接回車)
Enter passphrase (empty for no passphrase):
#重復密碼短語
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
aa:8b:61:13:38:ad:b5:49:ca:51:45:b9:77:e1:97:e1 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| .o. |
| .. . . |
| . . . o o |
| o. . . o E |
|o.= . S . |
|.*.+ . |
|o.* . |
| . + . |
| . o. |
+-----------------+
復制密鑰對
也可以手動在客戶端建立目錄和authorized_keys蕴坪,注意修改權(quán)限
#復制公鑰到無密碼登錄的服務(wù)器上,22端口改變可以使用下面的命令
#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.241
修改SSH配置文件
#編輯sshd_config文件
vi /etc/ssh/sshd_config
#禁用密碼驗證
PasswordAuthentication no
#啟用密鑰驗證
RSAAuthentication yes
PubkeyAuthentication yes
#指定公鑰數(shù)據(jù)庫文件
AuthorsizedKeysFile .ssh/authorized_keys
重啟SSH服務(wù)前建議多保留一個會話以防不測
#RHEL/CentOS系統(tǒng)
service sshd restart
#ubuntu系統(tǒng)
service ssh restart
#debian系統(tǒng)
/etc/init.d/ssh restart
手動增加管理用戶
可以在== 后加入用戶注釋標識方便管理
echo 'ssh-rsa XXXX' >>/root/.ssh/authorized_keys
# 復查
cat /root/.ssh/authorized_keys