多数时候使用密码来登录远程linux服务器是不安全的,许多ssh客户端都会保存密码,有泄密的风险;而如果每次都手动输入密码,就显得不太方便,那么这个时候可以选择使用ssh密钥登录,就是把ssh公钥放到服务器,私钥放到客户端,客户端配置成密钥登录,会更方便也更安全。
生成一个rsa密钥对
1 | [root@suzaku-20200812 ~]# ssh-keygen -t rsa |
默认生成的密钥文件在用户主目录下面的.ssh目录下,一般情况下不建议直接使用root用户进行登录。
密钥配置
将上面生成的id_rsa.pub公钥内容追加到.ssh目录下authorized_keys文件末尾。
1 | cd .ssh |
修改.ssh目录的权限为700,authorized_keys文件的权限为600,否则登录会提示server refuse you key:
1 | cd .. |
普通用户配置
如果你的用户不是root,而是一个普通用户,比如suzaku,那么需要更改.ssh的所有者为suzaku,否则仍然会登录不了:
1 | chown -R suzaku:suzaku .ssh |
配置授权文件
默认授权文件会读取用户主目录下的.ssh/authorized_keys文件,可以再检查一下配置是否正确。
1 | vi /etc/ssh/sshd_config |
打开密钥登录
1 | RSAAuthentication yes |
使用密钥进行登录
将上面生成的私钥id_rsa文件拷贝到本地,或者拷贝文件内容重新保存也行。
MAC下使用SecureCRT进行登录
- 打开软件,选择配置->Connection->Protocol,使用SSH2登录
- 选择Connection->Authentication,选择PublicKey方式
- 点击右侧Properties进行PublicKey配置
- 选择
Use session public key setting - 配置
Use identity or certificate file,选择下载的id_rsa文件 - 保存即可登录