Contents
  1. 1. 生成rsa密钥
  2. 2. 把自己公钥保存到服务器上
  3. 3. 修改服务器配置,允许使用密钥登陆

生成rsa密钥

如果你已经有密钥了(比如在用github时生成过),这步可以跳过,在~/.ssh/里找到自己的公钥即可

如果你已经有密钥了,请不要重复生成,会覆盖之前的密钥对

1
ssh-keygen -t rsa

也可以用别的非对称加密算法,这里不赘述了

会问你几个问题,直接一路回车就行了

可以看到用户目录下~/.ssh/里面生成了两个文件

  • id_rsa
  • id_rsa.pub

windowscmd下没办法用ssh-keygen,可以使用git bash或者Cmder里带的ssh-keygen,如果这些都没有`,可以在服务器上生成了下载下来。

把自己公钥保存到服务器上

需要注意:
一旦你的公钥(id_rsa.pub)保存到服务器上,服务器登陆不需要密码,只需要验证你的私钥(id_rsa),所以 生成的私钥一定要妥善保管,密钥被盗后果等同于登录密码被盗

登陆服务器

1
vim ~/.ssh/authorized_keys  #如果.ssh目录不存在,先创建即可:mkdir ~/.ssh

authorized_keys 里粘贴进去刚刚生成的 id_rsa.pub 的内容,如果authorized_keys已经有内容了,换一行、粘贴到最后面

:wq保存退出

修改用户目录的权限,这一步非常非常非常重要,用户目录权限过高无法使用密钥登陆

1
2
3
chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

修改服务器配置,允许使用密钥登陆

默认的ssh安装路径就在/etc/ssh/

现在大多数虚拟主机默认是开启密钥登录的

1
vim /etc/ssh/sshd_config

找到下面三行,去掉前面的注释符#

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

可以试试能不能免密码登陆了
如果不能登陆,可以试试重启下sshd

1
service sshd restart
Contents
  1. 1. 生成rsa密钥
  2. 2. 把自己公钥保存到服务器上
  3. 3. 修改服务器配置,允许使用密钥登陆