CodeMote 每次连接远程主机都要输入账号密码,问题出在连接配置默认走的是 SSH 密码认证。改成密钥认证之后,远程主机通过本机私钥识别你的身份,不再需要手工输入密码,连接速度和安全性都能改善。实现路径只有三步:在本地生成密钥对、把公钥安装到远程主机、在 CodeMote 里指向私钥文件。下面按这条路径给出可执行操作。
SSH 密钥认证适合接管远程主机的常规登录,前提是你有远端账号密码或已经能登录一次。处理方向是生成客户端密钥对、用 ssh-copy-id 安装公钥、在 CodeMote 密钥管理里选中私钥文件。验证方式是保存配置后直接发起连接,确认不再出现密码输入框。风险边界也明确:私钥文件一旦泄露,持有私钥的人就能登录;生成时若设置密码短语,CodeMote 连接时仍需要输入一次解锁口令,并非完全免密。
生成客户端 SSH 密钥对
先在本地生成一对 SSH 密钥,用于 CodeMote 登录远程主机。这里的“本地”指你日常使用 CodeMote 的设备,生成过程通常在 macOS 或 Linux 的终端完成。
ssh-keygen -t ed25519 -C "CodeMote 登录密钥"执行后,默认保存到 ~/.ssh/id_ed25519 和 ~/.ssh/id_ed25519.pub。第一个是私钥,第二个是公钥,公钥可以公开,私钥要保管好。命令会提示设置密码短语(passphrase),建议不设,直接回车跳过;这个密码短语不是远程登录密码,而是用来解锁本地私钥文件的。留空才是真正免密,设置后 CodeMote 连接时仍要输入一次私钥解锁口令。
将公钥安装到远程主机
公钥需要写入远程主机的 ~/.ssh/authorized_keys,远程主机才会信任本地客户端的私钥。用 ssh-copy-id 一次性完成创建目录、追加公钥和设置权限。
ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户@主机执行时仍会要求输入一次远程账号密码,这是授权步骤,不是最终登录凭证。验证安装结果:用 ssh 用户@主机 登录远程主机,然后查看公钥是否写入文件。
cat ~/.ssh/authorized_keys如果输出里有 ssh-ed25519 开头的记录,说明公钥已生效。部分系统没有 ssh-copy-id 命令时,可以手动追加公钥:ssh 用户@主机 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys",将本机公钥内容粘贴进去后保存。
在 CodeMote 中配置密钥身份
公钥装好后,回到 CodeMote。密钥认证入口通常在「设置」里的「密钥」或「密钥管理」页面,不同版本的位置略有差异,可以先在设置里找密钥管理项。
操作步骤:新建或编辑一台主机连接,把认证方式从“密码”改为“密钥/私钥”,然后选择本地私钥文件 id_ed25519,注意不是 id_ed25519.pub。如果私钥是从电脑导入 iOS 设备,需要先通过文件 App 放入 CodeMote 能读取的位置,再在设置中选择该文件。保存配置后,CodeMote 连接该主机时会自动携带私钥,不需要每次输入密码。
测试免密登录并处理权限问题
保存配置后回到主机列表,直接打开连接。如果不再出现密码输入框,说明免密登录已生效。如果远程主机日志出现 Bad owner or permissions,说明 .ssh 目录或 authorized_keys 文件权限过松,SSH 服务端会拒绝读取公钥。
登录远程主机执行以下命令修复权限,然后重试连接。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys权限修复后,CodeMote 再次连接应当恢复正常。需要确认的是,如果服务器通过堡垒机或统一身份系统管理登录,密钥认证可能被服务端策略禁用,这时需要先和系统管理员确认 sshd_config 中的 PubkeyAuthentication 配置。
管理多主机密钥与过期轮换
多台服务器不要共用同一把私钥。建议为每台主机生成独立的密钥文件,生成时指定不同文件名。
ssh-keygen -t ed25519 -f ~/.ssh/server-a -C "server-a"CodeMote 中为每台主机分别选择对应的私钥文件。当某台主机密钥泄露或需要轮换时,先在远程主机编辑 ~/.ssh/authorized_keys,删除对应的旧公钥行;然后在本地重新生成新密钥对,用 ssh-copy-id -i 新公钥文件 用户@主机 安装新公钥;最后在 CodeMote 设置中导入新私钥并删除旧私钥条目。整个流程要求你仍然有密码或已生效的备用登录方式,否则重新安装公钥时需要借助远程控制台完成。