Linux系统用ssh-keygen生成公私钥

本文介绍如何使用SSH公私钥对实现免密码拉取远程代码库内容及登录远程机器,包括生成公私钥对、配置远程服务器授权等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目开发过程中我们经常需要用git从远程代码库拉取代码到本地,或者需要从一台服务器端登录另一台服务器,这些情况下都需要知道远程代码库或者服务器的账号和密码。有没有一种方法可以不用每次连接远程机器的时候都输入账号和密码呢?答案是有的,这就是利用ssh-keygen生成本地机器的公钥和私钥对,将公钥提交给远程机器作为身份验证,远程机器通过公钥对本地机器进行身份验证成功之后,就可以实现无密码连接远程机器。

在终端输入命令行

ssh-keygen -t rsa -C "your_email@youremail.com"

-t  表示私钥类型

-C 表示注释,一般为自己的邮箱地址

更多参数如下:

-b:指定私钥长度; 

-e:读取openssh的私钥或者公钥文件; 

-f:指定用来保存私钥的文件名; 

-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥; 

-l:显示公钥文件的指纹数据; 

-N:提供一个新密语; 

-P:提供(旧)密语; 

-q:静默模式; 

公私钥对生成过程中会提示输入passphrase口令,这里根据自己的需要输入两次一样的口令,或者留空即可。

如果没有指定-f参数,则会在~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。如果-t参数指定为dsa,则生成id_dsa和id_dsa.pub两个文件(下文以rsa为例)。切忌把私钥透露给任何人。

到此,本地机器的公私钥对就生成完成了。

下面看看如何免密码从远程代码库拉取代码和免密码登录远程机器。

一、免密码拉取代码库代码。

1.复制~/.ssh/id-rsa.pub全部内容。

2.登录gitlab,进入Profile Settings->SSH Keys->ADD SSH KEY,在key表单输入id-rsa.pub的全部内容,Title表单随便填写一个title。点击ADD KEY保存ssh key的配置。

3.回到本地机器,终端git clone 远程代码git地址,即可拉取代码库内容了。

二、免密码登录远程机器

1.复制~/.ssh/id-rsa.pub全部内容。

2.登录远程机器,进入远程机器的~/.ssh/目录,创建authorized_keys文件,将本地机器的id-rsa.pub文件全部内容黏贴到远程机器的authorized_keys文件中,保存。

3.回到本地机器,终端输入#ssh 远程IP地址。即可实现免密码登录远程机器。

可能出现的问题:

有时会出现正确配置公私钥对之后仍无法登录远程机器的情况,此时需登录远程机器对~/.ssh/目录和文件进行如下配置:

chmod 600 authorized_keys  #设置authorized_keys权限
chmod 700 -R .ssh  #设置.ssh目录权限

要保证.ssh和authorized_keys都只有用户自己有写权限。权限开太大反而会验证失败。
### 如何在 Linux 中使用 `ssh-keygen` 工具生成 SSH 密钥对 #### 基本概念 `ssh-keygen` 是一种用于创建安全外壳协议(Secure Shell, SSH)密钥对的工具。它支持多种算法来生成公私钥对,其中最常用的是 RSA 和 ED25519。 #### 生成 RSA 密钥对 可以通过以下命令生成一个标准的 RSA 密钥对: ```bash ssh-keygen -t rsa ``` 此命令会提示用户指定保存密钥的位置以及设置密码保护[^1]。如果未指定路径,默认情况下,密钥会被保存到用户的 `.ssh` 文件夹中,文件名为 `id_rsa`(私钥)和 `id_rsa.pub`(公钥)。可以自定义存储位置通过 `-f` 参数完成,例如: ```bash ssh-keygen -t rsa -f /custom/path/to/keyfile ``` #### 指定密钥长度 为了增强安全性,可以选择更大的密钥长度。默认情况下,RSA 的密钥长度为 2048 位,但推荐使用更长的密钥以提高抗攻击能力: ```bash ssh-keygen -t rsa -b 4096 ``` 上述命令将生成一个 4096 位的 RSA 密钥[^2]。 #### 添加注释 注释字段可以帮助识别某个特定密钥的目的或所属者。这通常是电子邮件地址或其他描述性文字: ```bash ssh-keygen -t rsa -C "your.email@example.com" ``` 该参数会在生成公钥末尾附加一条注释信息。 #### 设置密码保护 对于更高的安全性,建议给私钥添加密码保护。这样即使私钥被泄露,也需要知道密码才能解密并使用它: ```bash ssh-keygen -t rsa -P "password" ``` 或者,在交互模式下输入密码时手动设定。 #### 转换密钥格式 有时可能需要将以 OpenSSH 格式生成的密钥转换成其他兼容的标准格式,比如 PEM: ```bash ssh-keygen -p -m PEM -f /path/to/private_key ``` 这条指令允许重新编码现有私钥至所需格式。 #### 查看密钥指纹 每一对生成SSH 密钥都有唯一的指纹用来确认其身份真实性。获取某密钥对应的指纹可执行下面的操作: ```bash ssh-keygen -lf /path/to/public_key ``` 这一功能特别适用于验证远程服务器上的已知主机条目是否匹配预期值。 #### 实现无密码登录 一旦成功生成了一套新的 SSH 密钥之后,下一步就是将其部署到目标机器上以便于实现自动化连接而无需每次都键入用户名与口令组合。具体做法是利用 `ssh-copy-id` 将本地计算机中的公共部分上传过去: ```bash ssh-copy-id user@remote_host ``` 随后编辑远端账户家目录下的授权钥匙列表文档加入新成员项即可生效: ```bash vim ~/.ssh/authorized_keys ``` 如此一来便完成了基于密钥的身份认证过程[^3]。 #### 应用场景实例——GitHub 登录配置 当涉及到像 GitHub 或 GitLab 这样的版本控制系统平台时,预先准备好个人专属的一组 SSH 凭证显得尤为重要。按照官方指引操作完毕后就能轻松拉取项目资源而不必反复提交凭证资料了[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值