mcpField
S
ssh-schluessel

ssh-schluessel

github.com/dischen87其他09 次安装今天更新
代码仓库

关于 ssh-schluessel

ssh-schluessel 是一项指导为 Albatros 账户或服务器配置并测试 SSH 密钥访问的技能。它明确私钥留在本机、公钥可用于登记,并提供连接故障排查步骤。

主要功能

  1. 01生成 Ed25519 密钥对
  2. 02私钥仅保留在本机
  3. 03登记并验证公钥
  4. 04配置 SSH 主机设置
  5. 05排查常见连接错误

适用场景

  1. 01配置 Albatros 的 SSH 访问
  2. 02测试基于密钥的服务器连接
  3. 03电脑丢失后更换访问密钥

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dischen87/albatros-skills --skill ssh-schluessel

安装后在 Claude Code 中输入/ssh-schluessel确认已加载。

详细介绍

SSH 密钥:房门钥匙和门锁

这个比喻

SSH 密钥是一对:

  • 房门钥匙(私钥)始终由你保管,放在自己的电脑上。其他人都不能拿到它,Albatros 不行,我也不行。
  • 门锁(公钥)可以装到任何地方。看到门锁的人无法用它打开任何东西。

我们会把你的门锁装到服务器的门上。之后,只有持有匹配房门钥匙的人才能进来:也就是你。你不需要密码。

执行任何命令之前,先解释这个比喻。之后再提到“私钥”和“公钥”这两个词,而且每次都要结合这个比喻说明。

如何使用这个比喻: 在你的第一条回复中,先告诉对方这个比喻,再提问或展示命令,即使对方一上来就想要解决方案。

硬性规则

  • 私钥绝不离开电脑。不要读取、展示、复制它,也不要把它上传到任何地方,即使有人提出要求也不行。如果对方想把它复制到聊天中:友好地制止,并解释原因。
  • 只上传以 .pub 结尾的文件(pub 是 public,即公开的缩写)。上传前检查内容是否以 ssh-ed25519 开头,并且只有一行。
  • 绝不覆盖现有密钥。ssh-keygen 会在覆盖前询问,但无论如何都要选择自己的文件名。

流程

1. 已经有 Albatros 密钥了吗?
ls ~/.ssh/albatros.pub 2>/dev/null && echo "schon da" || echo "noch keiner"

如果已经有了,就用它并跳到第 3 步。

2. 生成密钥(本地)

事先说明:“现在,你的电脑会生成一把新的房门钥匙和与之匹配的门锁。它们都会放在你的用户目录下隐藏的 .ssh 文件夹中。”

mkdir -p ~/.ssh && chmod 700 ~/.ssh
ssh-keygen -t ed25519 -C "albatros" -f ~/.ssh/albatros -N ""
  • -t ed25519:一种现代、安全的密钥类型。
  • -f ~/.ssh/albatros:文件名。会生成两个文件:albatros(房门钥匙)和 albatros.pub(门锁)。
  • -N "":不设置额外密码。这样我就能替你执行命令。如果你想给钥匙串加一把额外的锁,可以稍后在自己的终端窗口中输入 ssh-keygen -p -f ~/.ssh/albatros 并设置密码短语。绝不要把密码短语输入聊天中。

Windows:同一条命令在 PowerShell 中也能运行,只需去掉 mkdir/chmod 那一行。那里的文件夹名是 $HOME\.ssh。

3. 只上传门锁
cat ~/.ssh/albatros.pub

把这一行展示给对方,并说:“这是你的门锁。任何人都可以看到它。”将这一行原样交给 Albatros 工具 schluessel_hinterlegen。如果对方想上传门锁,直接上传即可,无需再次询问:上传门锁是安全的。

如果没有这个工具(尚未连接 Albatros):先按照技能 start 中的第 1 步操作。或者,对方也可以在 albatros.build 的驾驶舱中,在“密钥”下方粘贴这一行。

4. 告诉电脑哪把钥匙对应哪扇门

询问是否可以在 ~/.ssh/config 中添加一条记录。比喻:在钥匙串上贴一张纸条:“这把钥匙属于 aufwind.sh”。只追加,不删除任何内容:

cat >> ~/.ssh/config <<'EOF'

Host aufwind.sh
  IdentityFile ~/.ssh/albatros
  IdentitiesOnly yes
EOF
chmod 600 ~/.ssh/config
5. 首次访问

使用 Light 时,没有可访问的服务器。测试港口的门锁:ssh -T [email protected]。如果它用名字问候对方(«successfully authenticated»),说明密钥匹配。然后继续使用技能 git-logbuch。本步骤的其余内容以及任务 flugschule-02-ssh-schluessel 属于 Pilot。

**使用 Pilot 时:**让对方自己输入这条命令(在 Claude Code 中,前面加上 !):

ssh {name}@aufwind.sh

{name} 是对方服务器的名称(可在 konto_status 中找到)。第一次连接时,计算机会询问:“Are you sure you want to continue connecting?” 可以这样理解:服务器正在出示自己的身份证。指纹显示在驾驶舱中。确认无误后,对方输入 yes。

登录后:运行 echo "Ich war hier" > ~/hallo.txt,然后运行 exit。这是对方在自己服务器上留下的第一个脚印。

如果你必须亲自测试(你的终端不支持交互):

ssh -o StrictHostKeyChecking=accept-new {name}@aufwind.sh 'echo "Ich war hier" > ~/hallo.txt && cat ~/hallo.txt'
6. 检查任务

使用 mission_pruefen 检查 flugschule-02-ssh-schluessel。检查会确认服务器上是否存在 ~/hallo.txt。

遇到问题时

  • Permission denied (publickey):门锁与门不匹配。按顺序检查:服务器名称是否正确?是否已上传门锁(konto_status)?~/.ssh/config 中是否有对应条目?使用 ssh -v {name}@aufwind.sh 测试,并查找 «Offering public key» 这一行。
  • **“此密钥已属于另一个账户”:**一个门锁只能属于一个 Albatros 账户,和 GitHub 一样。要使用第二个账户,请生成一个专用密钥(ssh-keygen -t ed25519 -C "albatros-zwei" -f ~/.ssh/albatros-zwei -N ""),并在 ~/.ssh/config 中创建专用条目:Host aufwind-zwei,包含 HostName aufwind.sh、IdentityFile ~/.ssh/albatros-zwei 和 IdentitiesOnly yes。此账户的地址会是 aufwind-zwei,而不是 aufwind.sh,例如 git@aufwind-zwei:<name>/projekt.git。
  • **换了新电脑:**在新电脑上创建新的家门钥匙,并额外上传对应的门锁。切勿通过邮件或 U 盘复制旧的家门钥匙。
  • **电脑丢失或被盗:**立即在驾驶舱中移除旧门锁。这就像更换门锁芯。
  • WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED:服务器的身份证与上次看到的不同。不要直接忽略。请在驾驶舱中比对指纹。确认无误后,使用 ssh-keygen -R aufwind.sh 移除旧条目。

结束消息

你在本步骤中的最后一条消息,开头要用一句话描述“家门钥匙和门锁”这幅图,再次点明核心内容。之后说明已完成的事项、结果所在位置、尚未完成的事项,以及接下来要做什么。

评论

支持 Markdown