标签: ssh-keygen

用户(而非主机)SSH 密钥的 randomart 图像的目的是什么?

ssh-keygen产生以下输出:

The key fingerprint is:
dd:e7:25:b3:e2:5b:d9:f0:25:28:9d:50:a2:c9:44:97 user@machine
The key's randomart image is:
+--[ RSA 2048]----+
|       .o o..    |
|       o +Eo     |
|        + .      |
|         . + o   |
|        S o = * o|
|           . o @.|
|            . = o|
|           . o   |
|            o.   |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

此图像的目的是什么,它是否为用户提供任何价值?请注意,这是客户端(用户)密钥,而不是主机密钥。

ssh openssh ssh-keygen

102
推荐指数
2
解决办法
4万
查看次数

为什么 SSH 公钥(和私钥)的部分重叠?

具体来说,为什么 ssh Ed25519 公钥的前 25 个字符总是相同的?

例如,如果我用 制作 5 个键ssh-keygen -o -a 100 -t ed25519,前 25 个字符总是AAAAC3NzaC1lZDI1NTE5AAAAI.

我认为这是某种序言或标题,但我很想知道实际答案。

ssh sshd ssh-keygen

43
推荐指数
1
解决办法
3597
查看次数

将 OpenSSH 私钥转换为 SSH2 私钥

有没有办法将现有的 OpenSSH 密钥对转换为 SSH2(ssh.com 格式)密钥对?

UPD:因为有一些关于ssh-keygen突然出现的答案,我会解释我来自哪里(这也是“你试过什么?”的一个很好的答案)。

$> diff --report-identical-files <(ssh-keygen -e -f ~/.ssh/id_dsa) <(ssh-keygen -e -f ~/.ssh/id_dsa.pub)
Files /tmp/zshAGGWAK and /tmp/zshPZiIr6 are identical
Run Code Online (Sandbox Code Playgroud)

换句话说,ssh-keygen为私有和公共输入密钥返回相同的密钥(原始文件的哈希值明显不同,我已经检查了两次以确保它们是有效的私有密钥和公共密钥)。似乎ssh-keygen只为私人或公共输入密钥生成公钥。

我做错了还是正常行为?

ssh openssh ssh2 ssh-keygen puttygen

32
推荐指数
2
解决办法
8万
查看次数

如何使用主机名列表解密加密的 .ssh/known_hosts 的主机名?

我尝试通过传递 hostnamses 列表来找到一个脚本来解密(unhash) known_hosts 文件中的 ssh 主机名。

所以,完全相反

ssh-keygen -H -f known_hosts
Run Code Online (Sandbox Code Playgroud)

或者,如果 ssh 配置 HashKnownHosts 设置为 No,则执行与此相同的操作:

ssh-keygen -R know-host.com -f known_hosts
ssh-keyscan -H know-host.com >> known_hosts
Run Code Online (Sandbox Code Playgroud)

但无需重新下载主机密钥(由 ssh-keyscan 引起)。

就像是:

ssh-keygen --decrypt -f known_hosts --hostnames hostnames.txt
Run Code Online (Sandbox Code Playgroud)

其中 hostnames.txt 包含主机名列表。

ssh encryption hostname ssh-keygen

21
推荐指数
2
解决办法
3万
查看次数

Sign_and_send_pubkey:RSA 密钥签名失败;来自代理:代理拒绝操作

我有一台运行 debian sid 的新机器,我在上面生成了一个新的 ssh 密钥对。我想找到一种方便的方法,使用我的旧 Ubuntu 机器及其密钥对将这个新密钥对复制到其他各种机器。我已禁用所有“远程”计算机的密码登录,因此我想使用旧计算机作为中间设备。在研究这个问题时,我发现了的手册页中作为示例ssh-copy-id给出的确切情况我按照示例访问 pi 零 running pihole,但在帖子标题中出现错误。

总结该示例中的步骤,debian具有新密钥对的计算机在哪里,sarp.lan具有旧密钥对的计算机在哪里,并且pihole是“远程”计算机,我做了: 在此输入图像描述

但是,运行时ssh -v pihole,我确实看到了输出

debug1: Server accepts key: /home/sarp/.ssh/id_rsa RSA SHA256:V74Y4EhlszaIzco6oxOtl86ALj/U8rhXO2XUpEftZLU agent
Run Code Online (Sandbox Code Playgroud)

我阅读了有关该主题的各种帖子,但没有一个解决方案适合我。以下是我尝试过的一些细节/事情:

  • 权限正确的是.ssh/在此输入图像描述
  • 我没有运行 gnome-keyring-daemon: echo $SSH_AUTH_SOCKreturns /tmp/ssh-a8Ol5O0XY9Fv/agent.1326,并且我没有看到 keyring 守护进程正在运行ps aux
  • ssh-add -l正确显示第一张图片中可以看到的两个按键(一个来自旧机器,另一个来自新机器)
  • 我刚刚.ssh/config从旧机器复制了,所以主机名/用户名/等。应该没事。

让我知道我是否应该提供额外的有用信息,如果这是非常明显的事情,我深表歉意,但我在这里错过了什么?

ssh gnome-keyring ssh-agent ssh-keygen

15
推荐指数
2
解决办法
2万
查看次数

我可以通过分配一些伪 TTY 以交互方式从 Dockerfile 构建 Docker 容器吗?

我从下面的 Dockerfile 构建容器:

FROM ubuntu:14.04
...
RUN apt-get update && apt-get install -y vim
#RUN ssh-keygen -f /root/.ssh/id_rsa -N strongpass123$%^
RUN ssh-keygen -f /root/.ssh/id_rsa
...
Run Code Online (Sandbox Code Playgroud)

我很少这样做,但是在使用之前ssh-keygen和之后有很多命令。

我知道我可以从脚本开始docker exec -it thirsty_darwin sh script.sh,然后标记图像,然后使用容器(图像)链接,但这并不是我想要的清晰解决方案。

甚至最坏的情况是ssh-add ~/.ssh/id_rsa当我必须使用 expect 工具时。Expect 工具对我的密码进行了硬编码。我不想做这件事。

ssh expect ssh-keygen docker

12
推荐指数
1
解决办法
9140
查看次数

如何比较不同的 SSH 指纹(公钥哈希)格式?

当我登录到 SSH 服务器/主机时,我被问到其公钥的哈希值是否正确,如下所示:

# ssh 1.2.3.4
The authenticity of host '[1.2.3.4]:22 ([[1.2.3.4]:22)' can't be established.
RSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)

为了能够比较,我之前在SSH服务器上使用了这个命令,并将结果保存到客户端上的一个文件中:

# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 /etc/ssh/ssh_host_rsa_key.pub (RSA)
Run Code Online (Sandbox Code Playgroud)

出于某种重要原因(毫无疑问)这些命令中的一个使用了不同的(更新的?)显示哈希的方式,从而极大地帮助了中间人攻击者,因为它需要一个非平凡的转换来比较这些。

我如何比较这两个散列,或者更好:强制一个命令使用另一个的格式?

-E选项ssh-keygen不可用在服务器上。

ssh hashsum sshd ssh-keygen fingerprint

11
推荐指数
2
解决办法
2万
查看次数

为authorized_users添加密钥,无需重启sshd

我正在尝试向服务器添加公钥,但我不想重新启动 sshd 服务以使其生效。原因是重新启动 ssh 服务似乎对当时可以使用 ssh 服务的其他用户造成破坏。大多数文档建议添加一个公钥$HOME/.ssh/authorized_keys,然后重新启动sshd服务 ( systemctl restart sshd)。感兴趣的操作系统是 Linux。

我的问题是:

  1. sshd需要重启吗?
  2. 如果sshd是重启,那个时候有没有服务中断?
  3. 有没有办法使用 ssh 设置无密码身份验证,而无需sshd在添加新公钥后重新启动服务$HOME/.ssh/authorized_keys

linux ssh sshd ssh-keygen

8
推荐指数
1
解决办法
3万
查看次数

检查 known_hosts 中自定义端口下是否存在主机名

我需要添加一个检查,如果主机名已经存在于 known_hosts 中。

通常我会做这样的事情:

ssh-keygen -H -F hostname
Run Code Online (Sandbox Code Playgroud)

但是,在这种特殊情况下,这似乎对我不起作用。我使用端口 2202 连接到主机,如下所示:

ssh user@myhost -p 2102
Run Code Online (Sandbox Code Playgroud)

我要求将主机名添加到 known_hosts,我说是。之后我运行“ssh-keygen -H -F myhost”但收到空结果。更糟糕的是,known_hosts 被散列。

这与端口 22 完美配合,因此如果我登录到“ssh user@myotherhost”,保存已知主机并运行“ssh-keygen -H -F myotherhost”,我会收到文件中的确切行。

那么,如何调整命令以使用端口 2102?

ssh hostname ssh-keygen

7
推荐指数
1
解决办法
4541
查看次数

有没有办法列出 ssh-keygen 支持哪些类型的密钥?

我的系统(Fedora 35)上 ssh-keygen 的手册页显示支持以下类型的密钥:

\n
-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa\n         Specifies the type of key to create.  The possible values are\n         \xe2\x80\x9cdsa\xe2\x80\x9d, \xe2\x80\x9cecdsa\xe2\x80\x9d, \xe2\x80\x9cecdsa-sk\xe2\x80\x9d, \xe2\x80\x9ced25519\xe2\x80\x9d, \xe2\x80\x9ced25519-sk\xe2\x80\x9d, or \xe2\x80\x9crsa\xe2\x80\x9d.\n
Run Code Online (Sandbox Code Playgroud)\n

有没有办法在运行时通过向脚本ssh-keygen或其他脚本传递一些特殊标志来查阅此列表?或者这个类型列表是硬编码的并且仅在此手册页中指定?我问这个问题的原因是我想教我的 shell 如何自动完成-t

\n

ssh ssh-keygen

7
推荐指数
1
解决办法
2379
查看次数