Skip to content

fix: avoid touching remote ~/.ssh when starting sshd#8

Merged
imos merged 2 commits into
mainfrom
imos/20260330a
Mar 30, 2026
Merged

fix: avoid touching remote ~/.ssh when starting sshd#8
imos merged 2 commits into
mainfrom
imos/20260330a

Conversation

@imos

@imos imos commented Mar 30, 2026

Copy link
Copy Markdown
Member

fix #7

背景

sshpod は sshd 起動時にリモート側の ~/.ssh/environment を作成し、PermitUserEnvironment yes を有効化していました。
この前提は、ホームが NFS 上にある環境や ~/.ssh が外部管理されている環境では問題が起きます。

今回の再現環境では /root が NFS で、/root/.ssh は /ssh_config への symlink でした。
そのため mkdir -p "$USER_HOME/.ssh" が File exists で失敗し、root での初回接続時に sshd 起動前に abort していました。

変更内容

  • sshd 起動時にリモートの ~/.ssh を触らないように変更
  • ~/.ssh/environment の作成を削除
  • PermitUserEnvironment yes を削除
  • 環境変数の引き継ぎは引き続き sshd_config の SetEnv で実施
  • 未使用だった $BASE/environment の出力処理を削除
  • 不要な chown を削除
  • 起動スクリプトが user home の .ssh に依存しないことを確認するテストを追加

影響

  • PATH、KUBERNETES_*、KUBECONFIG の引き継ぎ方法は SetEnv に統一されます
  • もともと kubectl exec の全環境変数を転送していたわけではないため、今回の変更で転送対象がさらに減るわけではありません
  • ~/.ssh の owner や mount 特性に依存せず sshd を起動できるようになります

確認

  • cargo test -q
  • 再現環境で既存 sshd を停止したうえで、コールドスタートの ssh root@deployment--ws-test.sshpod が成功することを確認済み

@imos imos merged commit 988c688 into main Mar 30, 2026
16 checks passed
@imos imos deleted the imos/20260330a branch March 30, 2026 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

/root がNFSだった場合に動作が失敗する

1 participant