本文介绍VPS如何禁止密码登陆、使用ssh公钥密钥登录原理。
必须要避免使用根用户,可以创建一个叫who的非根用户,并将其加入sudo用户组:
[email protected]:~# adduser who
[email protected]:~# usermod -G sudo who
为了保证系统中的软件安装了最新的更新和安全修补,先进行升级操作:
[email protected]:~# sudo apt-get update
[email protected]:~# sudo apt-get upgrade
- SSH密钥对认证
推荐使用密钥认证的方式访问VPS。简单来说,就是创建一对密钥,其中私钥保存在本地设备中,公钥保存在VPS中,这样在本地设备使用ssh连接VPS的时候,VPS会随机创建一个消息,使用公钥加密之后把密文发送给本地设备,本地设备收到密文之后使用私钥解密,然后把解密后的消息发送给VPS,VPS验证无误后就会赋予访问权限。
在本地,生成密钥对并将公钥上传到VPS:
[email protected]:~# ssh-keygen
[email protected]:~# scp ~/.ssh/id_rsa.pub who@123.456.78.90:
在VPS,将公钥添加到授权文件中:
[email protected]:~# mkdir ~/.ssh # 如果不存在先创建
[email protected]:~# touch ~/.ssh/authorized_keys # 如果不存在先创建
[email protected]:~# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
[email protected]:~# chown -R who:who ~/.ssh # 修改目录权限
[email protected]:~# chmod 700 ~/.ssh
[email protected]:~# chmod 600 ~/.ssh/authorized_keys
- 禁止使用密码登录和使用根用户登录
修改 /etc/ssh/sshd_config 文件,将 PasswordAuthentication 和 PermitRootLogin 都设置为no。
重启ssh使修改生效:
[email protected]:~# sudo service ssh restart