SSH默认使用密码验证登录,这种登录方式存在一些问题:弱密码不安全,复杂密码易忘记,每次登录还需手动输入等麻烦。而使用SSH密钥登录,则完全解决上述方法存在的问题,不仅安全可靠,而且自动登录,省时省力。SSH 密钥登录采用的是非对称加密,需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(称为“签名”),也只有使用对应的公钥解密。
今天以搬瓦工VPS为例,做下密钥设置和使用的案例,供大家交流学习。
下面按重装和不重装操作系统两种场景演示,大家根据需要二选其一即可。
ssh-keygen命令生成密钥可以在服务端或客户端执行,只不过客户端涉及上传相对麻烦点,所以这里还是以搬瓦工vps为例,在vps终端做下服务端生成密钥演示:
root@localhost:~# ssh-keygen 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: SHA256:sz9MGBOnPXb/vXF5D1MZRepYthmVAp2lSdFcgVA/TI0 root@localhost.localdomain The key's randomart image is: +---[RSA 3072]----+ | o=+B*X| | . . .=E*o| | = o*= | | + + .= ++| | S= o..+..| | .o. ...| | .o o++| | .o oB| | .. .o| +----[SHA256]-----+ root@localhost:~# chmod 600 ~/.ssh/id_rsa root@localhost:~# chmod 600 ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
密码自定义
chmod 600 ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa.pub;
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
敲回车,将公钥信息导进authorized_keys文件里;如果想禁用vps密码验证登录,可以在vps终端,找到sshd的配置文件/etc/ssh/sshd_config,将PasswordAuthentication这一项设为no。
SSH密钥登录确实比密码登录验证更安全可靠,但用上并不代表绝对安全,需要保管好私钥文件,不能泄露私钥,除非给私钥再加一层密码保护,大家根据自己需要安排。
注意:上述不论何种方法,在操作过程中,务必将公钥和私钥信息整理完毕,确保私钥文件下载到本地,才能关闭已有连接的终端界面,否则vps因找不到私钥文件最终无法解密公钥验证登录,只能以密码形式验证或搬瓦工控制面板找到“Root password reset”重置。
puttygen.exe和ssh-keygen命令生成密钥与使用,个人从便利角度建议大家使用puttygen.exe本地生成密钥更稳妥。