返回社区列表

Tailscale SSH 终端免密登录交互指南

本指南旨在帮助您通过几个简单的交互式步骤,配置 MacBook Pro 到 Linux 云主机的稳定、安全、免密的 SSH 连接。

步骤 1:链路自检

MacBook Pro

先确认 Tailscale 与 22 端口可达。看到 pong + port 22 succeeded 即可。

tailscale ping -c 3 <TAILSCALE_IP>
nc -vz -w 3 <TAILSCALE_IP> 22

步骤 2:密码登录一次

MacBook Pro

用于后续把公钥写入云主机。这是唯一一次需要输入密码的操作。

ssh -o ConnectTimeout=8 -o PreferredAuthentications=password -o PubkeyAuthentication=no <SSH_USER>@<TAILSCALE_IP>

步骤 3:生成并下发公钥

MacBook Pro

无密钥则先生成;再将公钥写入远程主机的 authorized_keys 并设置权限。

test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
cat ~/.ssh/id_ed25519.pub | ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no <SSH_USER>@<TAILSCALE_IP> 'umask 077; mkdir -p ~/.ssh; touch ~/.ssh/authorized_keys; cat >> ~/.ssh/authorized_keys; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys'

步骤 4:验证免密

MacBook Pro

验证配置是否生效,必须看到 KEY_OK 才代表成功。

ssh -o PreferredAuthentications=publickey -o PasswordAuthentication=no <SSH_USER>@<TAILSCALE_IP> 'echo KEY_OK && whoami && hostname'

步骤 5:配置别名

MacBook Pro

配置本地 SSH config,后续只需执行 ssh <ALIAS> 即可秒连。

printf '\nHost <ALIAS>\n  HostName <TAILSCALE_IP>\n  User <SSH_USER>\n  IdentityFile ~/.ssh/id_ed25519\n  IdentitiesOnly yes\n' >> ~/.ssh/config && chmod 600 ~/.ssh/config
ssh <ALIAS> 'echo ALIAS_OK && whoami && hostname'

步骤 6:禁用密码(可选加固)

MacBook Pro

写入 00-key-only.conf,避免被 cloud-init 覆盖,确保只能密钥登录。

ssh <ALIAS> "printf '%s\n' 'PasswordAuthentication no' 'KbdInteractiveAuthentication no' 'ChallengeResponseAuthentication no' 'PubkeyAuthentication yes' > /etc/ssh/sshd_config.d/00-key-only.conf && systemctl reload ssh"
ssh <ALIAS> /usr/sbin/sshd -T | grep passwordauthentication

步骤 7:最终验收

MacBook Pro

预期应拒绝密码登录提示 Permission denied (publickey)。

ssh -o ConnectTimeout=8 -o PreferredAuthentications=password -o PubkeyAuthentication=no -o NumberOfPasswordPrompts=1 <SSH_USER>@<TAILSCALE_IP> 'echo SHOULD_NOT_SEE_THIS'

配置验收标准

  • 执行 ssh <ALIAS> 可直接秒进系统
  • 强制密码登录被 Permission denied 拒绝
  • SSHD 配置已通过 00-key-only.conf 加固