凌峰创科服务平台

Mac如何链接Linux服务器?

使用 SSH (Secure Shell)

SSH 是连接远程服务器的标准、安全的方式,macOS 系统已经预装了 SSH 客户端,所以我们无需安装任何额外软件。

Mac如何链接Linux服务器?-图1
(图片来源网络,侵删)

基本连接 (使用用户名和密码)

这是最直接的方法,适用于临时或个人服务器。

步骤 1:获取服务器信息

你需要从服务器管理员或自己那里获取以下信息:

  • 服务器 IP 地址域名 ( 168.1.100server.example.com)
  • 用户名 ( root, admin, 或你的普通用户名 john)

步骤 2:打开终端

在 macOS 上,按下 Command (⌘) + 空格键 打开 Spotlight 搜索,输入 Terminal终端 并回车,你也可以在 “应用程序” > “实用工具” 文件夹中找到它。

步骤 3:执行连接命令

在终端窗口中,输入以下格式的命令:

Mac如何链接Linux服务器?-图2
(图片来源网络,侵删)
ssh username@server_ip_or_domain

示例: 假设你的用户名是 ec2-user,服务器 IP 是 14.92.123,那么命令就是:

ssh ec2-user@52.14.92.123

步骤 4:接受密钥并输入密码

  1. 首次连接:系统会提示你该服务器的 SSH 密钥指纹,询问你是否信任该主机,输入 yes 并回车。

    The authenticity of host '52.14.92.123 (52.14.92.123)' can't be established.
    ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

    这是为了防止“中间人攻击”,确认后,系统会将该主机的密钥记录在你的本地。

  2. 输入密码:系统会提示你输入密码。*你输入的字符是看不见的(不会显示为 ``),这是正常的安全设计。** 直接输入密码,然后按回车。

    Mac如何链接Linux服务器?-图3
    (图片来源网络,侵删)

如果密码正确,你将成功登录到 Linux 服务器的命令行界面。


更安全的连接 (使用 SSH 密钥对)

每次输入密码很麻烦,也不安全,使用 SSH 密钥对是目前最推荐、最安全的方法,它基于公钥/私钥加密,无需输入密码即可登录。

步骤 1:在 macOS 上生成 SSH 密钥对

如果你还没有 SSH 密钥,请在终端中运行以下命令,一路按回车即可使用默认设置(密钥会保存在 ~/.ssh/ 目录下)。

ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t ed25519:指定使用更现代、更安全的 Ed25519 算法,如果你的服务器非常老旧,也可以使用 -t rsa
  • -C "...":这是一个注释,通常填入你的邮箱,方便识别密钥。

执行后,你会得到两个文件:

  • ~/.ssh/id_ed25519私钥绝对不能泄露! 保留在你的 Mac 上。
  • ~/.ssh/id_ed25519.pub公钥,需要上传到服务器上。

步骤 2:将公钥上传到 Linux 服务器

有几种方法可以将公钥添加到服务器的授权列表中(通常是 ~/.ssh/authorized_keys 文件)。

方法 A:使用 ssh-copy-id (最简单)

如果你的 macOS 和 Linux 服务器版本都较新,这是最简单的方法,它会自动将你的公钥追加到服务器的 authorized_keys 文件中。

ssh-copy-id username@server_ip_or_domain

系统会提示你输入该服务器的密码,输入一次密码后,你的公钥就会被安全地复制过去。

方法 B:手动复制 (ssh-copy-id 不可用)

  1. 在 macOS 上,查看你的公钥内容:

    cat ~/.ssh/id_ed25519.pub

    你会看到一长串以 ssh-ed25519 开头,以你的邮箱结尾的文本。完整复制这一整行文本

  2. 登录到你的 Linux 服务器(使用密码方式):

    ssh username@server_ip_or_domain
  3. 在服务器上,确保 .ssh 目录存在并拥有正确的权限:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  4. 将刚刚复制的公钥文本追加到 authorized_keys 文件中:

    echo "粘贴你刚才复制的公钥文本到这里" >> ~/.ssh/authorized_keys
  5. 设置 authorized_keys 文件的权限:

    chmod 600 ~/.ssh/authorized_keys
  6. 退出服务器 (exit),然后尝试重新登录。

步骤 3:使用密钥登录

再次尝试连接服务器:

ssh username@server_ip_or_domain

这次,如果一切顺利,你应该可以直接登录,而无需输入密码!


使用 SSH 配置文件 (~/.ssh/config)

如果你需要频繁连接多个服务器,每次都输入长长的命令会很麻烦。~/.ssh/config 文件可以让你为每个服务器设置一个简洁的别名。

步骤 1:创建或编辑配置文件

在终端中运行:

nano ~/.ssh/config

nano 是一个简单的文本编辑器,你也可以用 vim 或其他编辑器)

步骤 2:添加服务器配置

在文件中添加如下格式的配置:

# 服务器别名
Host my-server-alias
    # 实际的服务器IP或域名
    HostName 192.168.1.100
    # 登录用户名
    User ec2-user
    # 指定使用的私钥文件 (如果密钥文件名不是默认的 id_rsa 或 id_ed25519)
    IdentityFile ~/.ssh/id_ed25519
    # 端口号 (如果不是默认的 22)
    Port 2222

步骤 3:使用别名登录

保存并关闭文件后,你就可以用别名来连接了:

ssh my-server-alias

这比输入完整命令方便多了!


高级技巧和常见问题

通过中间服务器跳转 (SSH 代理转发)

如果你的本地电脑无法直接访问目标服务器,但可以访问一个“跳板机”或“堡垒机”,你可以这样配置:

~/.ssh/config 中这样写:

# 堡垒机配置
Host bastion
    HostName bastion.example.com
    User jump_user
    IdentityFile ~/.ssh/bastion_key
# 目标服务器配置,通过堡垒机跳转
Host target-server
    HostName 10.0.1.50
    User target_user
    # 关键在这里:通过堡垒机代理
    ProxyJump bastion
    # 或者使用旧版语法: ProxyCommand ssh -W %h:%p bastion

你只需要 ssh target-server,SSH 客户端会自动先连接到 bastion,然后再从 bastion 连接到 target-server

端口转发 (隧道)

SSH 可以安全地转发端口,用于访问远程服务(如数据库、网页服务等)。

  • 本地转发:将你本地的端口流量通过 SSH 隧道转发到远程服务器的某个端口。

    # 将本地 8080 端口的访问,转发到远程服务器 my-server-alias 的 3306 (MySQL) 端口
    ssh -L 8080:localhost:3306 my-server-alias

    在你的 Mac 上访问 localhost:8080,就等于在远程服务器上访问 localhost:3306

  • 远程转发:将远程服务器的端口流量通过 SSH 隧道转发到你本地的某个端口。

    # 将远程服务器 my-server-alias 的 8080 端口,转发到本地服务器的 3000 端口
    ssh -R 8080:localhost:3000 my-server-alias

常见问题排查

  • Permission denied (publickey,password).

    • 原因:无法通过密钥认证,也无法通过密码认证。
    • 解决
      1. 确认你使用的用户名和服务器 IP 是否正确。
      2. 如果使用密钥,检查 ~/.ssh/config 中的 IdentityFile 路径是否正确。
      3. 在服务器上,检查 ~/.ssh/authorized_keys 文件的内容是否正确,以及文件和目录的权限是否为 600700
      4. 尝试使用 -v (verbose) 参数获取详细日志:ssh -v username@server_ip,查看在哪一步失败了。
  • ssh: connect to host ... port 22: Connection refused

    • 原因:目标服务器没有运行 SSH 服务,或者防火墙阻止了 22 端口。
    • 解决
      1. 确认服务器上的 SSH 服务正在运行 (sudo systemctl status sshdsudo service ssh status)。
      2. 确认服务器的防火墙(如 ufw, firewalld)允许 22 端口的入站连接。
  • Warning: Permanently added ... to the list of known hosts.

    • 原因:你连接的服务器 IP/域名与之前记录的指纹不符(比如服务器重装了系统)。
    • 解决:如果你确定是同一个服务器,可以编辑 ~/.ssh/known_hosts 文件,删除对应行,然后重新连接,如果不确定,请谨慎操作,可能是攻击。

希望这份详细的指南能帮助你顺利地在 macOS 上连接到 Linux 服务器!

分享:
扫描分享到社交APP
上一篇
下一篇