()
| 329 | } |
| 330 | |
| 331 | func sshKeyDir() (string, error) { |
| 332 | cfgDir, err := os.UserConfigDir() |
| 333 | if err != nil { |
| 334 | return "", fmt.Errorf("UserConfigDir: %w", err) |
| 335 | } |
| 336 | dir := filepath.Join(cfgDir, "tailcat", "ssh") |
| 337 | if err := os.MkdirAll(dir, 0700); err != nil { |
| 338 | return "", err |
| 339 | } |
| 340 | return dir, nil |
| 341 | } |
| 342 | |
| 343 | // hostKeyMu protects concurrent generation of host keys with |
| 344 | // [getHostKeys], making sure two callers don't try to concurrently find |