本机配置
- 打开终端,执行命令:
ssh-keygen - 生成本机秘钥对文件,包含 id_rsa 私钥、id_rsa.pub 公钥,默认保存在 ~/.ssh/ 目录下,执行
open ~/.ssh/打开目录可以看到 - 在本机的 ~/.ssh/ 目录下新增config文件,文件名必须使用config,不然不识别,编辑config,内容格式如下
#别名快速登录linux服务器配置格式
Host ecs-test # 设置服务器别名
HostName 114.114.114.114 # 服务器ip
User root # 服务器用户名
# Port 22 # 服务器端口,如果服务器端SSH端口没有用默认的,需要在这里配置
IdentityFile ~/.ssh/id_rsa # 指定本机私钥
如果有多个配置,换行继续按这个格式编辑即可,比如:
#别名快速登录linux服务器配置格式
Host ecs-test # 设置服务器别名
HostName 114.114.114.114 # 服务器ip
User root # 服务器用户名
# Port 22 # 服务器端口,如果服务器端SSH端口没有用默认的,需要在这里配置
IdentityFile ~/.ssh/id_rsa # 指定本机私钥
#别名快速登录linux服务器配置格式
Host ecs-stage # 设置服务器别名
HostName 115.115.115.115 # 服务器ip
User root # 服务器用户名
# Port 22 # 服务器端口,如果服务器端SSH端口没有用默认的,需要在这里配置
IdentityFile ~/.ssh/id_rsa # 指定本机私钥
linux 服务器配置:
- 用root用户连接linux服务器,执行
vim ~/.ssh/authorized_keys。root用户访问 ~/ 目录默认就是 /root 目录,所以vim ~/.ssh/authorized_keys实际是vim /root/.ssh/authorized_keys; - 敲
i进入编辑模式,enter键换行,在原有内容的前边,粘贴本机 id_rsa.pub 公钥文件中的所有内容; esc键退出编辑模式,输入:wq命令,按enter键保存并退出vim编辑;- 如果是 centos7 及更高版本系统,执行
systemctl restart sshd更新ssh配置; - 如果是 centos6 系统,则执行
service ssh restart更新ssh配置;
好了,两边都配置完成,在本机终端,输入ssh ecs-test(ssh + 配置的别名)快速连接 linux 服务器
ed25519密钥生成 (参考来源)
以上是经典密钥生成,现推荐使用ed25519密钥,校验效率更高,执行命令举例:
# 用于 GitHub
ssh-keygen -t ed25519 -f my_github_ed25519 -C "email@163.com"
# 用于 Gitee
ssh-keygen -t ed25519 -f my_gitee_ed25519 -C "email@163.com"
# 用于 GitLab
ssh-keygen -t ed25519 -f my_gitlab_ed25519 -C "email@163.com"
# 用于企业
ssh-keygen -t ed25519 -f my_company_ed25519 -C "email@163.com"
ssh-keygen 的命令含义
举例:
ssh-keygen -t rsa -b 4096 -f my_id -C "email@example.com" 其中:
[-t rsa] 表示使用 RSA 算法。
[-b 4096] 表示 RSA 密钥长度 4096 bits (默认 2048 bits)。Ed25519 算法不需要指定。
[-f my_id] 表示在【当前工作目录】下生成一个私钥文件 my_id (同时也会生成一个公钥文件 my_id.pub)。
[-C "email@example.com"] 表示在公钥文件中添加注释,即为这个公钥“起个别名”(不是 id,可以更改)。
在敲下该命令后,会提示输入 passphrase,即为私钥添加一个“解锁口令”,解锁口令可以不设置,设置之后可以提高安全性,别人拿到你的私钥也不能直接使用。