服务器SSH免密登录

一、产生SSH公钥私钥对

NOTE: 1. 密钥对在一个机器上的一个用户中只需生成一次,以后不必再生成,可直接跳过此步骤执行公钥上传。
2. 公私钥删除或被覆盖会导致之前配置在远程服务器上的公钥失效,需要重新上传新的公钥。

1、在Linux (或macOS) 上产生SSH公私钥的方法
  • 本地终端执行命令 ssh-keygen

    • 出现Enter file in which to save the key ,输入Enter保持默认路径
    • 若出现id_rsa already exists. Overwrite (y/n)? ,则说明已经生成过Key,可以输入no,直接跳过此步骤,也可以选择yes覆盖之前的Key,但这样做会使得公钥改变,之前配置过的公钥需要重新上传。
    • 出现Enter passphrase (empty for no passphrase) ,设置一个使用Key时的口令,若设置则每次使用Key登录依然要输入这个口令,可以不设置,直接输入Enter
    • 出现Enter same passphrase again,依然直接输入Enter
    • Key生成结束,如下图:
      请添加图片描述
  • /home/xx/.ssh/ 下查看密钥对是否生成。

2、在win10上产生SSH公私钥的方法
  • 1)、检查windows 本地是否安装有ssh

    • 检查方式:键入win+r输入cmd,打开windows powershell,输入ssh命令。已安装则会显示ssh命令提示。请添加图片描述
      否则先在本地安装openssh
  • 2)、在本地生成SSH密钥对(公钥和私钥),用于和远程服务器取得联系。

    • 输入命令ssh-keygen (过程与Linux生成过程一样)
      ​ 在提供的默认文件路径下保存密钥文件即可(点回车即可),默认路径:C:\Users\用户名\ .ssh文件夹。请添加图片描述
  • ​3)、进入该文件路径,可以看到该目录下已生成id-rsa(私钥)和id-rsa.pub(公钥)两个文件。请添加图片描述

二、上传公钥到远程服务器

NOTE:上述方法产生公钥和私钥后,可以在任意一台服务器中使用该公私钥对,只需要将这里的公钥上传到不同的服务器即可。
ssh-copy-id 命令可以把本地主机的公钥复制到远程主机用户下的.ssh目录中的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限,无需其他配置。

1、在本地Linux (或macOS) 上使用 ssh-copy-id 的方式上传公钥
  • 1)、确保远程服务器可连接。
  • 2)、输入命令:ssh-copy-id 用户名@IP -p 22,输入密码后即可将公钥上传到指定服务器的指定用户下。
  • 3)、再次使用ssh登录命令即可使用Key的方式免密登录到服务器中。
  • 4)、使用scp命令时要在scp后面加 -P 22(注意大写)。
2、在windows上使用 ssh-copy-id 的方式
  • 1)、win10上无法直接使用ssh-copy-id命令,需要安装Linux子系统,安装方法见windows10安装linux子系统(WSL)
  • 2)、安装成功并创建一个用户后输入命令:cd /mnt/c/Users/xx/.ssh,即生成公私钥对的目录下。
  • 3)、确保远程服务器可连接后,在该终端下输入 ssh-copy-id -i id_rsa.pub 用户名@IP -p 22
  • 4)、再次使用ssh登录命令即可使用Key的方式免密登录到服务器中。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐