Skip to content

免密登录远程服务器

通常使用sshscp等命令登录远程服务器需要用户名和密码,使用密钥的方式可以避免这种复杂的方式,直接登录远程服务器。

密钥认证原理

假设 当前服务器A 需要登录登录 远程服务器B

首先在A服务器生成公钥和私钥,将公钥上传至远程服务器B中,在远程服务器建立连接通信时,远程服务器会首先验证服务器上是否包含请求服务器的公钥,若不包含则需要远程登录的用户输入密码。

生成公钥和私钥

在生成之前,请检查本服务器是否已经生成过密钥对:

  • windows中的用户根目录下检查.ssh文件夹,检查是否有密钥文件;
  • linux服务器中~/.ssh检查是否存在密钥文件。

若不存在,按以下方式进行生成:

生成密钥:ssh-keygen -t rsa,该命令产生三个交互:

  • 第一个交互是文件名,需要则输入文件名;
  • 第二个和第三个是密码与密码确认,之后使用公钥时需要输入密码确认,一般不设置

回车完成后会产生两个文件,私钥:id_rsa,公钥:id_rsa.pub

将公钥保存至服务器

  1. 上传公钥到远程服务器,scp ~/.ssh/id_rsa.pub root@10.112.1.1:~/,即将公钥存放在:~/id_rsa.pub

  2. 将公钥内容添加到authorized_keys 文件中:

    • cat ~/id_rsa.pub >> ~./.ssh/authorized_keys
    • 或者使用ssh-copy-id命令:ssh-copy-id -i ~/.ssh/id_rsa.pub <服务器用户名>@<服务器地址>,该命令会将公钥内容添加到远程服务器的authorized_keys中,并给予远程服务器用户目录适当的权限
  3. 之后即可使用以下方式直接登录远程服务器:ssh <服务器用户名>@<服务器地址>