ssh-schluessel について
ssh-schluesselは、AlbatrosアカウントやサーバーへのSSH鍵アクセスを設定・テストするスキルです。秘密鍵は端末内に保管し、公開鍵を登録する手順と接続時のトラブルシューティングを説明します。
主な機能
- 01Ed25519鍵ペアの生成
- 02秘密鍵を端末内に保持
- 03公開鍵の登録と確認
- 04SSHホスト設定の構成
- 05よくある接続エラーの調査
活用シーン
- 01AlbatrosのSSHアクセス設定
- 02鍵認証によるサーバー接続のテスト
- 03端末紛失後のアクセス鍵の交換
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dischen87/ albatros-skills --skill ssh-schluesselインストール後、Claude Code で/ssh-schluesselを入力して読み込まれたか確認します。
詳細
SSHキー:家の鍵と錠前
たとえ
SSHキーはペアになっています。
- 家の鍵(秘密鍵)は、常にあなたのコンピューターに置いておきます。ほかの人には渡しません。Albatrosにも、私にも渡しません。
- 錠前(公開鍵)は、どこにでも取り付けてもらえます。錠前を見ても、それで何かを開けることはできません。
あなたのサーバーのドアに錠前を取り付けます。その後は、対応する家の鍵を持っている人、つまりあなたしか中に入れません。パスワードは必要ありません。
コマンドを実行する前に、このたとえを説明してください。「秘密鍵」と「公開鍵」という言葉を使うのはその後にして、使うときは必ずたとえと一緒に説明します。
このたとえの使い方: 最初の返答で、質問したりコマンドを見せたりする前に、相手に伝えてください。すぐに解決策を求めている場合も同じです。
厳守事項
- 秘密鍵がコンピューターから外に出ることはありません。読み取ったり、表示したり、コピーしたり、どこかにアップロードしたりしてはいけません。頼まれても同じです。相手がチャットに貼り付けようとしたら、丁寧に止めて、その理由を説明してください。
- アップロードするのは、
.pub(public、公開)の拡張子で終わるファイルだけです。アップロード前に、内容がssh-ed25519で始まり、1行だけであることを確認してください。 - 既存のキーを上書きしてはいけません。
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:ファイル名です。2つのファイルが作成されます。albatros(家の鍵)とalbatros.pub(錠前)です。-N "":追加のパスワードを設定しません。これにより、私がコマンドを実行できます。キーの束に追加の錠前を付けたい場合は、後で自分専用のターミナルウィンドウでssh-keygen -p -f ~/.ssh/albatrosを入力し、パスフレーズを設定してください。そのパスフレーズをチャットに入力してはいけません。
Windows:mkdir/chmod の行を除けば、同じコマンドをPowerShellで実行できます。フォルダーは $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」の行を探してください。- 「この鍵はすでに別のアカウントに登録されています」: GitHub と同様に、鍵は Albatros アカウント一つにしか登録できません。2つ目のアカウントには専用の鍵を作成し(
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.shの代わりにaufwind-zweiを使います。たとえばgit@aufwind-zwei:<name>/projekt.gitです。 - 新しいコンピューターの場合: 新しいコンピューターで新しい家の鍵を作り、鍵を追加でアップロードします。古い家の鍵をメールやUSBメモリでコピーしてはいけません。
- コンピューターを紛失または盗難された場合: コックピットで古い鍵をすぐに削除します。これはシリンダー錠を交換するようなものです。
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED:サーバーの身分証が前回と異なっています。安易に無視しないでください。コックピットで指紋を照合してください。一致した場合に限り、ssh-keygen -R aufwind.shで古い行を削除します。
最後のメッセージ
このステップでの最後のメッセージは、「家の鍵と錠前」のイメージに触れ、要点をもう一度伝える一文から始めてください。その後、達成したこと、結果の保存場所、未完了のこと、次に進む内容を伝えます。