Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

SSH config writes are not idempotent, and tests write fixture hosts into the user's real ~/.ssh/config (164 duplicate blocks observed)

Đang mở
#175 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
52/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
networking, testing

Hướng nghiên cứu

Xác định đường dẫn ghi cấu hình SSH và các test tạo fixture my_cluster; trước tiên xác minh những test nào có thể truy cập ~/.ssh/config. Được xem là hoàn tất khi các lần ghi lặp lại không tạo ra các khối host trùng lặp, các mục được tạo được cô lập an toàn hoặc có thể thay thế, và các test sử dụng cấu hình tạm thời trong khi vẫn giữ nguyên các mục thực của người dùng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

clustrix appends entries to the user's real ~/.ssh/config without deduplicating, and it writes test-fixture hosts into that personal config. On my machine this accumulated to 164 identical placeholder blocks.

Evidence

Measured on a real user config (macOS, ~/.ssh/config):

total lines:        1202
total Host entries:  172

Frequency by host (real hostnames redacted):

164  Host my_cluster          <- test fixture, repeated 164x
  1  Host <gpu-host-alias>
  1  Host <slurm-host-alias>
  1  Host test_cli
  1  Host test_cleanup
  1  Host <slurm-host-alias-2>
  1  Host <slurm-host>
  1  Host <slurm-host-alias-3>
  1  Host <institution-domain>

Every duplicate block is byte-identical and self-labelled:

# Clustrix auto-generated entry for my_cluster
Host my_cluster
    HostName cluster.example.com
    User testuser
    IdentityFile ~/.ssh/id_ed25519_clustrix_testuser_my_cluster
    IdentitiesOnly yes

cluster.example.com / testuser is a test fixture, not a real host. After removing only the my_cluster blocks, the file went from 1202 lines / 172 Host entries to 52 lines / 8 Host entries, with every genuine entry preserved.

Two distinct bugs

  1. No deduplication on write. Each run appends a new block for a host that already has one. Nothing detects or replaces the existing entry, so the file grows without bound across runs.
  2. Tests write to the real user config. my_clustercluster.example.com / testuser is fixture data. A test suite should never mutate ~/.ssh/config; it should write to a temp file and point SSH at it via -F / ssh_config path injection.

Impact

  • The user's personal SSH config becomes unmanageable (1202 lines of which ~96% is generated noise).
  • Real entries get buried among fixtures, making the file hard to audit.
  • Functionally the duplicates are inert — OpenSSH takes the first match for a given Host pattern — so this is a hygiene and trust problem rather than a broken-connection problem. But it means clustrix silently rewrites a security-relevant file in the user's home directory.

Suggested fixes

  • Make config writes idempotent: look for an existing block for the same Host alias and replace it in place, rather than appending.
  • Delimit generated regions with explicit markers (e.g. # >>> clustrix managed >>> / # <<< clustrix managed <<<) so the tool can rewrite only its own section and users can see what it owns.
  • Consider writing to a dedicated ~/.ssh/clustrix_config and having users add a single Include clustrix_config line, so clustrix never touches the main file.
  • In the test suite, redirect all SSH-config writes to a tmp_path fixture. No test should be able to modify ~/.ssh/config.
  • Optionally ship a clustrix ssh-config --prune command to clean up configs already affected.

Environment

  • clustrix installed from source (repo master)
  • macOS, OpenSSH client
Ngôn ngữ chính
Python
Star
10
Fork
4
Merge trung bình
15 giờ 10 phút
Pull request đã merge (30 ngày)
2

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ContextLab/clustrix

Tất cả issue của ContextLab/clustrix

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.