编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

MacOS/Linux 本地生成 SSH Key(linux生成ssl证书)

wxchong 2024-08-02 08:56:21 开源技术 43 ℃ 0 评论
  1. 检查本地PC 是否安装有 SSH
  1. 检查本地用户目录下是否已有 SSH key

命令行中的 % 是为了模拟说明 Shell,不属于命令里的一部分,不同的账号和操作系统不一样,有可能是$、#。

% cd
% ls -al
  • 查看 用户目录下是否有隐藏的 .ssh 目录文件
  • 如果有执行 cd .ssh 命令进入该目录
% ls -al 
total 32
drwx------ 6 zhaifeng staff 192 12 18 10:30 .
drwxr-x---+ 32 zhaifeng staff 1024 12 18 08:42 ..
-rw------- 1 zhaifeng staff 2602 12 15 17:23 id_rsa
-rw-r--r-- 1 zhaifeng staff 571 12 15 17:23 id_rsa.pub
-rw------- 1 zhaifeng staff 828 12 18 10:30 known_hosts
-rw-r--r-- 1 zhaifeng staff 92 12 18 10:30 known_hosts.old

如果存在则跳过第 3 步

  1. 创建 SSH Key

命令语法

ssh-keygen [选项]

命令选项

  • -b:指定密钥长度;
  • -e:读取openssh的私钥或者公钥文件;
  • -C:添加注释;
  • -f:指定用来保存密钥的文件名;
  • -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
  • -l:显示公钥文件的指纹数据;
  • -N:提供一个新密语;
  • -P:提供(旧)密语;
  • -q:静默模式;
  • -t:指定要创建的密钥类型
% ssh-keygen -t rsa -C "your_email@example.com"
  • 代码参数含义:
  • -t 指定密钥类型,默认是 rsa ,可以省略。
    -C设置注释文字,比如邮箱。
    -f 指定密钥文件存储文件名。
  • 以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码,如:
Generating public/private rsa key pair.
# Enter file in which to save the key (/Users/用户名/.ssh/id_rsa): [Press enter]

这里可以输入文件名称,但是建议不输入,使用默认的文件名称,在完成全部命令后默认会生成id_rsa 和 id_rsa.pub 两个秘钥文件id_rsa 私钥文件id_rsa.pub 公钥文件

Enter passphrase (empty for no passphrase): 
# Enter same passphrase again:
  • 创建过程中,会提示输入两次密码
  • 该密码是在使用 SSH Key 时,push文件到云服务(Github、Gitee、Gitlab)要输入的密码,不是该云服务的账号密码
  • SSH key 创建成功提示:
Your identification has been saved in /Users/用户名/.ssh/id_rsa.
# Your public key has been saved in /Users/用户名/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com


  1. 添加SSH key到Github服务
  • 复制本地生成的公钥id_ras.pub中的文本字符串
% cat ./id_rsa.pub




在Mac/Liunx环境下, 如果要查看、复制私钥、公钥, 以及authorized_keys等文件, 不要使用vim等文本编辑器打开,避免产生不必要的回车;

应该通过cat、more等查看命令把内容打印到终端上, 进行复制等操作.

登录 Github 账号,点击右上角头像,在弹出的对话框中,选择Setting->SSH and GPG keys->New SSH Key,将复制的公钥字符串粘贴到Key文本框中,这里 可以选择填写Title或者不填写采用默认生成的,默认生成的是生成公钥时的邮箱。

  1. 测试 SSH Key
% ssh -T git@github.com
  • 当输入以命令后,Github 服务会返回一段警告代码,如:
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
  • 输入Yes 并且回车
yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi orgrm! You've successfully authenticated, but GitHub does not provide shell access.



  • 如果你创建 SSH key 的时候设置了密码,接下来就会提示你输入密码,如:
Enter passphrase for key '/Users/用户名/.ssh/id_rsa':

如果你密码输错了,会再要求你重新输入直到正确。

注意:输入密码时使用删除键是无法更正的,可以直接回车然后重新输入。


  • 密码正确后你会看到下面这段话,如:
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.
  1. 文件权限

为了让私钥文件和公钥文件能够在认证中起作用, 需要确保权限的正确性:

对于.ssh目录以及其内部的公钥、私钥文件, 当前用户至少要有执行权限, 其他用户最多只能有执行权限.

普通用户, 建议设置成600权限:

chmod 600 authorized_keys id_rsa id_rsa.pub;

root用户, 建议设置成644权限:

chmod 644 authorized_keys id_rsa id_rsa.pub.

禁止设置成777权限: 太大的权限不安全, 而且数字签名也不支持这种权限策略.

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表