【.ssh文件】.ssh文件夹下各文件作用+如何生成和使用 SSH 密钥对

.ssh 文件夹是存储 SSH 配置文件、密钥对(公钥和私钥)以及与 SSH 连接相关的其他文件的地方。在 Git 或其他使用 SSH 协议的应用中,通常需要使用 .ssh 文件夹来存放公钥和私钥,用于安全地连接远程服务器(如 GitHub、GitLab、服务器等)。

.ssh 文件夹的位置

  • 在 Windows 上,通常 .ssh 文件夹位于你的用户目录下:C:\Users\你的用户名\.ssh
  • 在 Mac 和 Linux 上,.ssh 文件夹通常位于你的 home 目录下:~/.ssh/

.ssh 文件夹中的常见文件

  1. 私钥文件 (id_rsa, id_ed25519 等)

    • 私钥文件是用来进行身份验证的保密文件,不应与他人分享。它通常会被存储为 id_rsa 或 id_ed25519 等文件名。

    示例:

    ~/.ssh/id_rsa  # RSA 私钥
    ~/.ssh/id_ed25519  # Ed25519 私钥
    
  2. 公钥文件 (id_rsa.pub, id_ed25519.pub 等)

    • 公钥文件是私钥的配对文件,用于将你的身份认证信息传递到服务器。你可以安全地将公钥分享给服务器(例如 GitHub)。

    示例:

    ~/.ssh/id_rsa.pub  # RSA 公钥
    ~/.ssh/id_ed25519.pub  # Ed25519 公钥
    
  3. 配置文件 (config)

    • 该文件用于配置 SSH 客户端的选项,例如指定不同的密钥文件、不同的主机名等。你可以通过编辑 ~/.ssh/config 文件来设置多个 SSH 配置。

    示例:

    Host github.com
      User git
      IdentityFile ~/.ssh/id_rsa
    

  4. 已知主机文件 (known_hosts)

    • 该文件保存你连接过的服务器的公钥,用于防止中间人攻击。当你第一次连接到某个服务器时,SSH 会提示你是否信任该服务器的公钥,然后把该公钥存储到 known_hosts 文件中。

    示例:

    ~/.ssh/known_hosts
    

如何生成和使用 SSH 密钥对

  1. 生成 SSH 密钥对  在终端中运行以下命令生成 SSH 密钥对:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • -t rsa: 使用 RSA 算法。

    • -b 4096: 设置密钥长度为 4096 位。

    • -C "your_email@example.com": 添加一个注释(通常是你的电子邮件地址)来标识密钥。

    然后,你将被提示输入文件保存路径。默认情况下,密钥将保存在 ~/.ssh/id_rsa(Linux/Mac)或 C:\Users\你的用户名\.ssh\id_rsa(Windows)中。

  1. 添加公钥到 GitHub 生成密钥对后,你可以将公钥(例如 ~/.ssh/id_rsa.pub)添加到 GitHub 帐户中:

    • 复制公钥的内容:
      cat ~/.ssh/id_rsa.pub
      
    • 登录到 GitHub,点击 Settings > SSH and GPG keys > New SSH key,然后粘贴公钥并保存。
  2. 测试 SSH 连接 运行以下命令测试你与 GitHub 的 SSH 连接:

    ssh -T git@github.com
    

    如果成功,GitHub 会显示一条欢迎信息,类似于:

    Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
    

其他常见问题

  • 权限问题:确保 .ssh 文件夹及其中的文件具有正确的权限。运行以下命令以确保权限正确:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/*
    
  • 多个 SSH 密钥:如果你有多个 SSH 密钥,可以通过编辑 ~/.ssh/config 文件来配置不同的密钥用于不同的主机。例如:

    Host github.com
      User git
      IdentityFile ~/.ssh/id_rsa
    
### 创建.ssh目录 当面临Ubuntu系统中不存在`.ssh`文件夹的情况时,可以通过手动创建该文件夹来解决问题。具体操作如下: 对于本地机器上的`.ssh`目录缺失情况,可以使用以下命令创建并设置权限: ```bash mkdir ~/.ssh chmod 700 ~/.ssh ``` 上述命令首先创建了一个名为`.ssh`的隐藏目录于用户的家目录下,并设置了只有当前用户有读取、写入以及执行权限[^2]。 ### 生成SSH密钥对 为了能够安全地通过SSH连接远程主机,在本地计算机上需要有一对匹配的公私钥。这一步骤可通过`ssh-keygen`工具完成: ```bash ssh-keygen -t rsa ``` 这条指令会启动交互式的密钥生成过程,默认情况下会在`~/.ssh`路径下保存新产生的密钥文件;其中包含一个私钥(通常是`id_rsa`)对应的公钥(即`id_rsa.pub`)。如果希望指定不同的位置或更改加密算法,则可以在运行命令前查阅官方文档了解更多选项[^4]。 ### 将公钥添加到远程服务器 为了让远程服务器接受来自本机的安全认证请求,还需要把刚刚生成的公钥上传过去。一种简便的方法就是利用SCP协议传输公钥文件,之后将其内容追加进目标账户下的授权键列表里: ```bash scp ~/.ssh/id_rsa.pub username@hostname:~ ssh username@hostname cat ~/id_rsa.pub >> ~/.ssh/authorized_keys rm ~/id_rsa.pub ``` 这里先将本地的公钥发送到了远端用户的根目录,接着登录进入对方环境,最后把接收到的内容附加到允许访问者的公共密钥集合之中。注意删除临时拷贝过去的公钥副本以保持整洁[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值