Mac用户如何实现SSH远程连接:从Putty替代到原生终端高效管理

发布时间:2026/8/22 17:12:07
Mac用户如何实现SSH远程连接:从Putty替代到原生终端高效管理 1. 项目概述为什么Mac用户需要Putty如果你刚从Windows阵营切换到Mac或者需要在Mac上管理远程服务器你可能会发现一个熟悉的“老朋友”不见了——那就是Putty。在Windows世界里Putty几乎是SSH、Telnet、串口连接等远程登录的代名词它免费、轻量、功能直接。但当你打开Mac的应用程序文件夹却找不到它的身影。这引出了一个很实际的问题Mac电脑上怎么安装和使用Putty首先我们需要明确一点Mac系统本身就是一个强大的Unix-like系统它内置了功能完备的终端Terminal应用通过OpenSSH客户端ssh命令可以完成绝大多数Putty在Windows上承担的SSH连接工作。所以严格来说Mac用户“安装Putty”的需求往往源于两种场景一是对Putty的界面、会话管理、密钥工具如Pageant的替代品有特定的操作习惯和依赖二是需要连接一些非SSH的传统协议如Telnet或串口虽然这类需求在现代运维中已大幅减少。因此这篇内容将不仅仅是一份“安装指南”。我会带你深入理解Mac下的远程连接生态对比原生方案与Putty方案的优劣并详细演示两种主流方法通过Homebrew安装原版Putty适用于Intel芯片Mac以及寻找和使用更符合Mac生态的现代化替代品。无论你是想原汁原味地找回Windows的操作感还是想探索更优雅的Mac原生解决方案这里都有你需要的答案。2. 核心需求解析Putty在Mac上的定位与替代方案在动手安装之前我们必须先理清自己的核心需求。盲目安装一个软件不如找到最适合自己工作流的工具。2.1 Putty的核心功能与Mac原生能力对比Putty在Windows上主要提供四大功能SSH客户端用于加密连接Linux服务器、网络设备等。Telnet客户端连接老式网络设备或系统。串口连接通过串行端口连接交换机、路由器控制台或嵌入式设备。SFTP文件传输通过PSFTP工具进行安全的文件传输。现在我们逐一检视Mac的原生能力SSH客户端Mac终端直接内置ssh命令。你只需要打开“终端”Terminal输入ssh usernamehostname -p port即可连接。功能强大且稳定这是最正统的Unix方式。Telnet客户端Mac也内置了telnet命令但出于安全考虑在较新版本的macOS中可能默认未安装。如果需要可以通过命令行工具安装。串口连接Mac可以使用screen命令进行串口连接例如screen /dev/tty.usbserial 9600。虽然不如Putty的图形界面直观但功能完备。SFTP文件传输Mac原生支持sftp命令用法类似ssh。对于图形化需求macOS Finder甚至可以通过“连接服务器”cmdK输入sftp://地址来访问或者使用功能更全的FileZilla、Cyberduck等免费工具。结论对于纯SSH连接Mac原生终端在功能和效率上通常优于Putty的图形界面。Putty的优势在于其统一的图形化会话管理保存主机、用户名、密码、集成化的密钥代理Pageant以及对于多种旧协议的一站式支持。2.2 你的真实需求是什么根据上面的对比你可以问自己几个问题我是否极度依赖Putty的会话管理器保存了上百个服务器连接信息我是否需要频繁使用Telnet或串口连接老旧设备我是否喜欢图形化的密钥管理工具如加载PPK格式密钥还是说我只是需要一个好用的SSH终端并且愿意尝试更符合Mac设计哲学的工具如果你的答案偏向前三者那么寻找Mac版的Putty或类似工具是合理的。如果你的需求只是最后一个那么直接学习使用Mac终端或尝试一些现代化的SSH客户端如iTerm2 增强配置会是更高效的选择。接下来我将分别针对这两种路径给出详细方案。3. 方案一通过Homebrew安装原生PuttyIntel Mac对于坚持要使用原版Putty的用户特别是手中是Intel芯片Mac的用户通过Homebrew包管理器安装是最简单、最规范的方法。Homebrew是Mac上事实标准的软件包管理器相当于Ubuntu的apt或CentOS的yum。3.1 准备工作安装Homebrew如果你的Mac上还没有Homebrew需要先安装它。打开“终端”应用输入以下命令/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)这个命令会从Homebrew的官方GitHub仓库下载安装脚本并执行。安装过程中脚本会提示你安装Xcode Command Line Tools这是必需的开发组件按照提示操作即可。安装完成后建议运行以下命令将brew添加到你的环境变量对于Apple Silicon芯片的Mac尤其重要echo eval $(/opt/homebrew/bin/brew shellenv) ~/.zshrc source ~/.zshrc注意从macOS Catalina开始默认的Shell从Bash切换到了Zsh~/.zshrc。如果你确认自己还在使用Bash则需要将上面的.zshrc改为.bash_profile。你可以通过echo $SHELL命令来查看当前使用的Shell。3.2 安装Putty安装好Homebrew后安装Putty就变得非常简单。在终端中继续输入brew install puttyHomebrew会自动处理所有依赖并从它的软件仓库中下载、编译并安装Putty。这个过程通常很快。重要限制说明需要特别注意的是Homebrew仓库中的putty公式formula主要针对Intel芯片的Mac进行了适配和测试。在Apple SiliconM1/M2/M3等芯片的Mac上虽然Homebrew可以通过Rosetta 2转译来安装和运行但可能会遇到一些不可预见的兼容性问题或者某些特性如串口连接无法正常工作。如果你使用的是Apple Silicon Mac且必须使用Putty可以尝试通过Rosetta 2模式安装一个Intel版本的Homebrew但这会引入复杂性。对于M系列芯片用户我强烈建议优先考虑下一节的替代方案。3.3 运行与基本使用安装成功后你并不能像在Windows那样在“应用程序”文件夹里找到一个图标。Putty是通过命令行启动的。主要包含以下几个工具putty主程序SSH/Telnet/串口客户端。puttygen密钥生成器用于生成和转换SSH密钥如将OpenSSH格式转为PPK。psftpSFTP命令行客户端。pscpSCP命令行文件传输工具。要启动图形界面的Putty你需要在终端中输入putty这会打开一个和Windows版几乎一模一样的Putty配置窗口。你可以在这里输入主机名、选择协议、保存会话。实操心得启动优化每次都要打开终端输入putty很麻烦。你可以创建一个“快速操作”或“别名”在终端里输入nano ~/.zshrc(或~/.bash_profile)。在文件末尾添加一行别名alias puttygui/opt/homebrew/bin/putty路径请用which putty命令确认。保存退出在nano中按CtrlX然后按Y确认再按回车。执行source ~/.zshrc。以后在任何终端窗口直接输入puttygui就能启动Putty了。更进一步你还可以使用Mac的“自动操作”Automator创建一个真正的应用程序将其拖到程序坞但这对于命令行工具来说意义不大。4. 方案二拥抱Mac生态——现代化终端与SSH客户端推荐对于大多数Mac用户尤其是使用Apple Silicon芯片的用户放弃对原版Putty的执念转而使用更强大的原生或现代化工具往往会获得事半功倍的效果。下面我介绍几个分层级的替代方案。4.1 基础之选系统原生终端 OpenSSH这是最纯粹、最强大的方案无需安装任何额外软件。终端Terminal位于“应用程序 - 实用工具”中。它稳定、省资源。iTerm2这是终端的一个强大替代品是许多开发者的首选。它支持分屏、搜索高亮、自动补全、粘贴历史、触发器等大量增强功能。通过Homebrew安装brew install --cask iterm2。核心技能使用SSH Config文件管理会话这才是告别Putty会话管理器的终极武器。在~/.ssh/目录下创建或编辑一个名为config的文件没有后缀nano ~/.ssh/config你可以这样配置Host myserver1 HostName 192.168.1.100 User root Port 22 IdentityFile ~/.ssh/id_rsa_myserver Host aws-prod HostName ec2-xx-xx-xx-xx.compute-1.amazonaws.com User ubuntu IdentityFile ~/.ssh/aws_key.pem Host internal-* User admin ProxyJump jumpbox-host保存后在终端中你只需要输入ssh myserver1或ssh aws-prod系统就会自动使用配置好的主机名、用户、端口和密钥文件进行连接。这比任何图形化会话管理器都高效、清晰并且易于用版本控制工具如Git管理。4.2 图形化需求之选Termius、Tabby等现代SSH客户端如果你仍然偏爱图形化界面并且需要多平台同步Mac, Windows, iOS, Android那么这些现代客户端是比Putty更好的选择。Termius界面美观支持SSH、SFTP、端口转发内置服务器分组、标签、团队协作功能并且有免费的跨平台同步套餐。它完美适配Apple Silicon。你可以从Mac App Store下载或从其官网下载。Tabby原名Terminus一个开源的、高度可定制的终端模拟器支持Windows、Mac、Linux。它内置了SSH连接管理器主题插件丰富颜值和功能都在线。通过Homebrew安装brew install --cask tabby。对比Putty的优势现代UI符合macOS设计规范支持暗色模式。会话管理同样支持保存会话且管理界面更直观。密钥管理能很好地集成Mac系统的钥匙串Keychain管理OpenSSH格式密钥id_rsa无痛。功能扩展通常内置SFTP文件浏览器类似WinSCP支持多标签、分屏。4.3 特殊协议之选针对Telnet和串口如果你的需求真的涉及Telnet或串口也有专门的工具Telnet如前所述可通过brew install telnet安装命令行客户端。对于图形化一个轻量级选择是**“网络实用工具”**Network Utility它在较老版本的macOS中预装新版本可能需要从/System/Library/CoreServices/Applications/目录里找或者使用其他工具如brew install --cask royal-tsx一个功能强大的远程连接管理套件。串口连接命令行使用screen如screen /dev/tty.usbserial 115200。退出按CtrlA然后输入:再输入quit。图形化推荐CoolTerm或Serial。CoolTerm是免费的功能专业Serial在Mac App Store上售价不菲但体验极佳。它们都原生支持Apple Silicon。5. 核心环节实现从安装到首次SSH连接全流程为了让思路更清晰我以一个最常见的场景为例在一台全新的Apple Silicon Mac上为一个习惯Putty但愿意尝试新工具的开发者配置好SSH连接环境。我们选择“iTerm2 SSH Config 密钥对”这套组合拳。5.1 环境准备安装iTerm2与Homebrew首先我们安装必要的工具。打开“终端”这是我们现在唯一的终端。安装Homebrew如果尚未安装命令见3.1节。通过Homebrew安装iTerm2brew install --cask iterm2--cask参数表示安装的是图形化应用程序.app而不是命令行工具。安装完成后在“应用程序”文件夹中找到iTerm2并打开。你可以将其拖到程序坞作为未来主要的终端入口。5.2 生成与管理SSH密钥对Putty使用.ppk格式密钥而Mac原生OpenSSH使用id_rsa私钥和id_rsa.pub公钥格式。我们需要生成后者。生成密钥对在iTerm2中运行ssh-keygen -t rsa -b 4096 -C your_emailexample.com-t rsa指定密钥类型为RSA。-b 4096指定密钥长度为4096位更安全。-C添加一个注释通常用邮箱。执行命令后会提示你“Enter file in which to save the key”。直接按回车使用默认路径~/.ssh/id_rsa。接着提示“Enter passphrase”输入一个密码短语。强烈建议设置这能为你的私钥增加一层密码保护即使私钥文件泄露没有密码也无法使用。输入两次。生成成功后你会看到指纹和随机艺术图案。私钥在~/.ssh/id_rsa公钥在~/.ssh/id_rsa.pub。实操心得密钥管理不要共享私钥私钥id_rsa相当于你的家门钥匙绝不能发给别人。需要配置到服务器上的是公钥id_rsa.pub。使用ssh-agent管理密码每次连接都输入密码短语很烦。可以启动ssh-agent帮你记住eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa输入一次密码后在当前终端会话期间就无需再输入。你可以将ssh-add命令添加到~/.zshrc中但要注意安全风险如果电脑被他人直接使用。备份.ssh目录整个~/.ssh/目录非常重要建议加密备份到安全的地方。5.3 配置SSH Config文件管理多台服务器假设你要管理三台服务器一个本地测试机、一个腾讯云CVM、一个AWS EC2。创建或编辑SSH配置文件nano ~/.ssh/config输入以下内容根据实际情况修改# 本地虚拟机 Host dev HostName 192.168.31.100 User vagrant Port 22 IdentityFile ~/.ssh/id_rsa_dev # 腾讯云服务器 Host tx-cloud HostName 123.456.789.123 User ubuntu Port 22 IdentityFile ~/.ssh/id_rsa_tx # AWS EC2 服务器 (通过跳板机) Host aws-app HostName 10.0.1.50 # 私有IP User ec2-user IdentityFile ~/.ssh/aws_key.pem ProxyJump jumpbox Host jumpbox HostName ec2-jumpbox-public-ip.compute-1.amazonaws.com User ec2-user IdentityFile ~/.ssh/aws_key.pem保存并退出CtrlX,Y,回车。配置解析Host你自定义的别名在终端里就用这个短名连接如ssh dev。HostName服务器的真实IP地址或域名。User登录用户名。PortSSH端口默认22可省略。IdentityFile指定该服务器使用的私钥文件路径。ProxyJump这是OpenSSH 7.3引入的强大功能用于通过一台跳板机堡垒机连接内网服务器。配置好后ssh aws-app命令会自动先连接jumpbox再跳转到aws-app无缝完成。5.4 进行首次连接与文件传输现在进行第一次连接首先你需要将公钥部署到服务器。以dev服务器为例假设你已经能用密码登录ssh-copy-id -i ~/.ssh/id_rsa_dev.pub vagrant192.168.31.100输入密码后公钥就会被添加到服务器的~/.ssh/authorized_keys文件中。之后你就可以使用配置好的别名进行无密码连接了ssh dev如果私钥有密码短语且ssh-agent已运行并添加了该密钥则直接登录成功否则会提示你输入一次私钥密码。文件传输上传文件到服务器scp /path/to/local/file.txt dev:/home/vagrant/从服务器下载文件scp dev:/home/vagrant/file.txt /path/to/local/使用SFTP交互式传输sftp dev sftp put local_file.txt sftp get remote_file.txt sftp bye所有这些命令都支持使用Host别名与SSH配置无缝集成。6. 常见问题与排查技巧实录在实际操作中你肯定会遇到各种问题。下面是我总结的一些典型问题及其解决方法。6.1 权限问题SSH目录与密钥文件权限过松这是最常见的安全错误。SSH协议对相关文件的权限有严格限制。现象连接时提示“Permissions 0644 for ‘~/.ssh/id_rsa‘ are too open.”或直接拒绝连接。原因私钥文件能被其他用户读取。解决在终端中执行以下命令修复权限chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa* chmod 644 ~/.ssh/known_hosts chmod 644 ~/.ssh/config chmod 644 ~/.ssh/*.pub700表示目录所有者可读、写、执行600表示文件所有者可读、写644表示所有者可读、写其他人只可读。6.2 连接失败Operation timed out 或 Connection refusedOperation timed out通常意味着网络不通或者防火墙拦截。排查先用ping server_ip测试基础网络连通性。使用telnet server_ip 22或nc -zv server_ip 22测试目标服务器的22端口是否开放。如果没安装telnet可以用brew install netcat安装nc工具。检查本地或服务器防火墙如ufw,firewalld规则确保22端口入站规则已放行。如果是云服务器检查安全组Security Group或网络ACL规则。Connection refused通常意味着目标端口没有服务在监听。排查确认服务器上SSH服务是否运行在服务器上执行sudo systemctl status sshd。确认SSH服务监听的端口检查服务器上的/etc/ssh/sshd_config文件中的Port设置。你的连接命令或SSH Config中指定的端口需要与之匹配。服务器防火墙可能只允许了特定IP连接。6.3 认证失败Permission denied (publickey,password)这个错误说明SSH连接已建立但认证失败。首先确认认证方式错误信息指明了是公钥认证失败。这意味着服务器已配置为使用密钥登录但你的密钥不对。检查本地私钥路径确认SSH Config中IdentityFile指向的路径正确且文件存在。检查公钥是否部署到服务器登录服务器如果还有密码登录方式检查对应用户家目录下的~/.ssh/authorized_keys文件确认你的公钥内容已完整添加进去。注意这个文件权限也必须是600或644。检查服务器SSH配置检查服务器的/etc/ssh/sshd_config文件确保以下配置正确PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 如果你禁用了密码登录确认密钥能正常工作后再改这项修改后需重启SSH服务sudo systemctl restart sshd。使用详细模式调试在客户端连接时添加-v参数如ssh -v dev会输出详细的连接过程有助于定位问题发生在哪一步。6.4 Apple Silicon (M系列芯片) Mac 的特殊问题Homebrew安装的Putty无法运行或功能不全如前所述这是预期之内。解决方案就是放弃原版Putty采用方案二的现代化工具。iTerm2、Termius、Tabby都已完美原生支持Apple Silicon。某些命令行工具兼容性问题极少数为Intel编译的命令行工具在M芯片上可能有问题。解决方法使用Homebrew安装时它会自动选择原生ARM版本或通过Rosetta 2兼容的版本。对于个别软件可以尝试使用Architecture转译在终端中输入arch -x86_64 /bin/bash启动一个x86模式的Shell然后在这个Shell里运行有问题的命令。但这只是临时方案。6.5 SSH Config文件不生效语法错误SSH Config文件对缩进和语法很敏感。确保使用空格而非Tab缩进每个参数占一行。可以用ssh -G dev命令来测试你的dev配置最终被解析成什么参数与预期对比。文件权限问题如前所述~/.ssh/config文件的权限不应太开放推荐644。Host匹配错误Host后面可以跟通配符*。注意匹配顺序是自上而下的第一个匹配到的配置块生效。7. 进阶技巧与效率提升掌握了基础之后这些技巧能让你的远程管理效率飞升。7.1 使用VS Code Remote-SSH进行远程开发如果你需要进行远程开发强烈推荐使用Visual Studio Code的Remote-SSH扩展。它允许你像编辑本地文件一样直接在远程服务器上编写、运行和调试代码。在VS Code中安装“Remote - SSH”扩展。按F1输入“Remote-SSH: Connect to Host...”。选择“Configure SSH Hosts...”编辑你的SSH Config文件就是之前那个~/.ssh/config。配置好后再次选择“Connect to Host...”就能看到你配置的服务器别名如dev,tx-cloud。连接后VS Code会在服务器上自动安装一个轻量级服务端然后整个界面就变成了操作远程服务器的环境。你可以打开终端、安装扩展、运行项目体验和本地几乎无异。7.2 配置SSH长连接与多路复用频繁断开重连SSH很烦。可以配置TCP KeepAlive和连接多路复用ControlMaster。 在你的~/.ssh/config文件顶部或针对特定主机添加Host * ServerAliveInterval 60 ServerAliveCountMax 3 ControlMaster auto ControlPath ~/.ssh/%r%h:%p ControlPersist 4hServerAliveInterval 60每60秒向服务器发送一个保活包防止连接因超时被断开。ServerAliveCountMax 3如果连续3次保活包无响应客户端才认为连接已断。ControlMaster auto启用连接共享。第一个连接建立后后续到同一台服务器的连接会复用这个TCP通道极速连接。ControlPath指定控制套接字的存储路径。ControlPersist 4h即使所有会话都关闭主连接通道仍保持4小时以供新会话复用。7.3 安全的密钥管理与备份策略为不同服务使用不同密钥就像上面SSH Config示例中那样不要一把钥匙开所有门。为个人服务器、公司服务器、云平台分别生成不同的密钥对。使用硬件密钥对于最高安全级别的需求如服务器root密钥、生产环境访问考虑使用YubiKey等硬件安全密钥。私钥存储在硬件中无法导出每次使用需要物理触摸确认。备份策略将整个~/.ssh/目录用加密压缩包备份。可以考虑使用gpg进行对称加密tar czf - ~/.ssh | gpg -c ssh_backup.tar.gz.gpg恢复时gpg -d ssh_backup.tar.gz.gpg | tar xzf - -C ~定期更换密钥制定策略每隔一段时间如一年更换一次主要密钥。从在Mac上寻找Putty的替代品开始我们实际上完成了一次从Windows思维到Unix/Mac思维的转变。最终你会发现Mac原生的终端配合SSH Config、现代化的客户端如iTerm2或VS Code Remote所带来的流畅度和强大功能是图形化的Putty难以比拟的。这个过程的关键不是安装一个特定的软件而是理解工具背后的工作流并选择最适合当前平台和自身习惯的那一套组合。对于仍然需要Putty特定功能的用户Homebrew提供了通道但对于绝大多数场景拥抱Mac生态的原生力量无疑是更高效、更优雅的选择。