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