关于 ssh-schluessel
ssh-schluessel 是一项指导为 Albatros 账户或服务器配置并测试 SSH 密钥访问的技能。它明确私钥留在本机、公钥可用于登记,并提供连接故障排查步骤。
主要功能
- 01生成 Ed25519 密钥对
- 02私钥仅保留在本机
- 03登记并验证公钥
- 04配置 SSH 主机设置
- 05排查常见连接错误
适用场景
- 01配置 Albatros 的 SSH 访问
- 02测试基于密钥的服务器连接
- 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移除旧条目。
结束消息
你在本步骤中的最后一条消息,开头要用一句话描述“家门钥匙和门锁”这幅图,再次点明核心内容。之后说明已完成的事项、结果所在位置、尚未完成的事项,以及接下来要做什么。