文章目录

  • 1.命令简介
  • 2.命令格式
  • 3.选项说明
  • 4.常用示例
  • 5.authorized_keys 和 known_hosts
  • 参考文献

1.命令简介

ssh-keygen 是 OpenSSH 身份验证密钥实用工具。

ssh-keygen 用于 OpenSSH 身份验证密钥的生成、管理和转换,它支持 RSA 和 DSA 两种认证密钥。

2.命令格式

ssh-keygen [OPTIONS] <file>...

3.选项说明

-b <bits>指定密钥长度。
-e读取 OpenSSH 的私钥或者公钥文件。
-C添加注释。
-f <filename>指定用来保存密钥的文件名。
-i读取未加密的 ssh-v2 兼容的私钥/公钥文件,然后在标准输出设备上显示 openssh 兼容的私钥/公钥。
-l显示公钥文件的指纹数据。
-N提供一个新密语。
-P <passphrase>提供(旧)密语。
-q静默模式。
-t指定要创建的密钥类型。

4.常用示例

(1)创建一个默认密钥。

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/lighthouse/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/lighthouse/.ssh/id_rsa.
Your public key has been saved in /home/lighthouse/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:c8jkpkXgRqqfelFHKxq956d+6qYzAR0kHgnaVs9gtYw lighthouse@VM-0-3-centos
The key's randomart image is:
+---[RSA 2048]----+
|  ..*+=          |
| o +.%.o.        |
|. o EoBoo.       |
| . .o.==o.       |
|  .  = +S .      |
|   .o.o+.o       |
|    o..+         |
|   .. o o o      |
|  ..  .B==       |
+----[SHA256]-----+

中途需要三次确认,全部缺省直接回车即可。

完成后,在 ~/.ssh 目录下将会看到两个文件:

ls -l ~/.ssh
id_rsa  id_rsa.pub

id_rsa 为当前主机的私钥。id_rsa.pub 为当前主机的公钥。

(2)指定要创建的密钥类型,缺省为 RSA。

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nTaoqOxlG6IQQ2zDTMvSk2EON+4tLrYqPy7IBrstoy4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|..=              |
|*B.+             |
|.X*              |
|+..o     o .     |
|o o .   S =      |
|.+ . . . . .     |
|*oo = .          |
|EBo= o           |
|%@B..            |
+----[SHA256]-----+

(3)指定密钥的类型并添加注释。

ssh-keygen -t rsa -C "dablelv@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Wx3MWwj36fwhcnb6hjdIIJ3SUggCLcmFq62Earqy2E0 deng@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|  ..*o .. o .    |
|   = ..  . * o . |
|    o     + * +  |
|   .     + * *   |
|. o     S =.++oo |
|.o .     o  +.+..|
|o . E   .   ..o .|
|++ o         o.+ |
|Oo. .         o..|
+----[SHA256]-----+

(4)读取 OpenSSH 的私钥或者公钥文件。

ssh-keygen -e
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted by lighthouse@VM-0-3-centos from Ope"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDb1aKBbvfSefnuzLfhNKlIa4zsbBFG+m7ugZbeBW
RwJXONhSq/AW27+Tq9zDtI6qG+UxmjIorVHbAVl4llVZz8e5b/s5I0yiBoLy/RokpvisNB
kVkWl2oNGtkdHxTSYcJ3jdbTZ+ya6MyOiaMt24jV+zxxS1BXWxA14kS/JqiMC7lx9Vu0Ed
AHY0zq2dj+pX31FB7Xs7p98eO+Est6msCGIInIpzGTlTskL6m7B+aMBaquWlEyQAmRX5G8
YoOFw+aDT4q1aaaaBkFdcy/nhHPpbfM8eIzbAv+khHRjZV8XQCo+UeHzme8nmfWDCWwKZ8
TnpO239diTdl2Wps2YCMex
---- END SSH2 PUBLIC KEY ----

(5)安静模式生成密钥对。

ssh-keygen -q -t rsa
Enter file in which to save the key (/home/lighthouse/.ssh/id_rsa):
/home/lighthouse/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

5.authorized_keys 和 known_hosts

有时,你在 ~/.ssh 目录下可能还会看到 authorized_keys 和 known_hosts 这两个文件。

  • authorized_keys

如果当前主机是 SSH 服务端,那么会有 authorized_keys,用来存放客户端机器的公钥。

我们需要本地机器通过 SSH 访问远程服务器时为了减少输入密码的步骤,基本上都会在本地机器生成 SSH 公钥,然后将本地 SSH 公钥复制到远程主机的 ~/.ssh/authorized_keys 中,这样就可以免密登录了。

  • known_hosts

如果当前主机为 SSH 客户端,你可能会在 ~/.ssh 目录下看到 known_hosts 文件,该文件用来记录连接过的远程主机。

known_hosts 文件每行记录一个连接过的远程服务器的公钥。

文件中的每一行都包含以下字段:标记符(可选)、主机名、公钥类型、base64 编码的公钥、注释。字段之间用空格分隔。

如果是首次连接某个远程主机,那么会有安全提示是否继续连接。

The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

另外,在 /etc/ssh 目录下也可能会有 ssh_known_hosts 来保存一些对所有用户都可信赖的远程主机信息。


参考文献

ssh-keygen(1) — Linux manual page - man7.org
SSH_KNOWN_HOSTS FILE FORMAT
一文读懂authorized_keys和known_hosts_游语的博客-CSDN博客
SSH known_hosts / authorized_keys 的解释 - CSDN

Linux 命令(208)—— ssh-keygen 命令相关推荐

  1. Linux使用SSH上传下载文件,Linux下通过ssh scp命令上传下载文件

    Linux下通过ssh scp命令上传下载文件. 1.上传本地文件到服务器 scp /path/filename username@servername:/path/ 例如 scp /var/tale ...

  2. 香橙派可以运行linux,如何使用SSH远程命令登录香橙派开发板

    香橙派Orange Pi 系列开发板是开源的单板电脑,新一代的arm开发板,可以运行Android.Ubuntu.Debian等操作系统.CPU使用全志H2.H3.H6.RK3399等芯片,拥有多种内 ...

  3. linux ssh注册码,linux ssh -l 命令运用

    ssh是远程登录命令,-l选项是最常用的选项,下面是我的一些总结 远程登录:ssh  -l  userName  ip # 远程登录到 10.175.23.9 ssh -l root2 10.175. ...

  4. unity连接linux服务器,C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令...

    本文主要向大家介绍了C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. 在Unity3D项目开发工具时需要用到S ...

  5. linux screen 命令是 ssh 的有效补充

    linux -- screen 命令是 ssh 的有效补充 有时候会有这样的问题,当在公司服务器上打开了一个终端,做了很多事情,或正开着某个服务程序,下班回家了. 突然有事需要接入到服务器,如果用 s ...

  6. linux远程连接telnet命令,Linux中的ssh,ping,ftp,telnet远程登录及通信相关的命令...

    本节,我们将介绍一些和Linux系统远程登录及通信相关的命令. SSH命令 SSH(Secure Shell即安全的Shell)可以登录和操作远程操作系统,它会建立一个安全的连接,将通信数据进行加密, ...

  7. linux ssh ip地址命令,关于Linux:在ssh会话中查找客户机的IP地址

    我有一个脚本,由使用ssh登录到服务器的人运行. 有没有办法自动找出用户连接的IP地址? 当然,我可以问用户(这是一个程序员的工具,所以没问题),但如果我刚刚发现的话,会更酷. 建议转到服务器故障,不 ...

  8. linux系统中ssh命令,Linux系统中SSH 命令的用法有哪些?

    今天小编要跟大家分享的文章是关于Linux系统中SSH命令的用法有哪些?一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方.要亲自一台一台的去访问来管理它们显然不是最好的方法,通 ...

  9. 【Linux】SSH相关命令

    [Linux]SSH相关命令 关于SSH SSH 为 Secure Shell 的缩写,SSH 为建立在应用层和传输层基础上的安全协议. SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性 ...

  10. 学习Linux命令:关于ssh命令

    1.查看SSH客户端版本 有的时候需要确认一下SSH客户端及其相应的版本号.使用ssh -V命令可以得到版本号.需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用Op ...

最新文章

  1. python和R对dataframe的单列数据进行统计:value_counts、table、unique、nunique、min、max、mean、sort、length、var、quantile、
  2. Rocketmq基于docker部署并在Springboot中接入
  3. Xcode 6.3 Ineligible Devices 临时解决方法
  4. Python 实用技巧之正则表达式查找和替换文本的操作方法
  5. 如何打造顶级目标检测算法?百度官方揭秘 ECCV2020 双料冠军的理论与实践
  6. 【博客项目】—案例初始化(二)
  7. 为什么rand()+ rand()产生负数?
  8. Python语言为什么被称为高级程序设计语言?
  9. Linux安装dos环境,Ubuntu安装dos2unix工具
  10. 如何用html实现图片轮播,怎么单纯的用html+css实现图片轮播?
  11. 大学计算机基础技能论文,计算机基础论文,关于关于大学计算机基础教学相关参考文献资料-免费论文范文...
  12. 中科院计算所是怎样的存在?院校详情大盘点!
  13. Linux固态硬盘 设置写入缓存,Win10下的写入缓存策略严重影响SSD硬盘的性能!
  14. 3.Go语言中常量,变量, 及其命名规则以及代码风格
  15. 搞定检索式对话系统的候选response检索--使用pysolr调用Solr
  16. 水果忍者VR原型 二
  17. Vue中使用SVG-ICON
  18. 如何在未越狱的ios系统安装ipa文件
  19. 初学者如何学好编程?
  20. 华为西安,中兴西安——近况

热门文章

  1. 用批处理文件实现同步到个人时间服务器,局域网内时间同步net time的使用
  2. d3带箭头和点击事件的力导向关系图
  3. Arduino与Proteus仿真实例-TFT显示屏(ILI9341驱动器)SPI驱动仿真
  4. 洛谷 P3426 [POI2005]SZA-Template
  5. 系统分析实验 Python
  6. 用Java写一个PC端的WIFI-ADB管理软件
  7. navigationview菜单项点击之后跳转_饿了么、美团外卖等小程序APPID和跳转PATH获取...
  8. Windows 10免费原生打开HEIC格式的图片(无需转换,直接用照片打开)
  9. 联想T440怎么把原装Win8或Win10换成Win7系统
  10. 【POI2004】【Bzoj2069】T2 洞穴 zaw