终端和ssh

  • 什么是终端(Terminal)
  • 什么是 SSH
  • 它们之间的关系
  • 常用操作和最佳实践

🖥️ 一、什么是终端(Terminal)?

终端 是一个用户与操作系统内核交互的文本界面。在 macOS 中:

  • 默认终端应用:Terminal.app(也可用 iTerm2、Alacritty 等)
  • 实际运行的是 shell(如 zshbash),负责解析并执行命令

✅ 你可以通过终端:

  • 运行本地命令(ls, cd, git
  • 启动编辑器(nano, vim, code
  • 发起 SSH 连接远程服务器

🔒 二、什么是 SSH?

SSH(Secure Shell) 是一种加密网络协议,用于:

  • 安全地远程登录到另一台计算机(通常是 Linux 服务器)
  • 安全地传输文件(配合 scpsftp
  • 隧道转发、端口代理等高级用途

基本语法:

ssh [用户名@]主机地址

示例:

# 登录远程服务器(默认使用当前用户名)
ssh 192.168.1.100

# 指定用户名
ssh user@example.com

# 指定端口(默认 22)
ssh -p 2222 user@server.com

🔗 三、终端 和 SSH 的关系

终端 SSH
本地程序,提供命令行界面 网络协议,用于远程连接
SSH 命令是在终端中运行的 SSH 会话的内容显示在终端里
可以不使用 SSH(只操作本地) SSH 必须依赖终端(或图形化 SSH 工具)

👉 简单说:你在终端里输入 ssh ...,就建立了一个到远程主机的安全会话,之后所有命令都在远程执行,但结果显示在本地终端。


🔑 四、macOS 上使用 SSH 的最佳实践

1. 生成 SSH 密钥(免密登录)

# 生成 RSA 或 Ed25519 密钥(推荐后者)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 默认保存在 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)

2. 将公钥上传到服务器

# 方法1:手动复制公钥内容到服务器的 ~/.ssh/authorized_keys
cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# 方法2:使用 ssh-copy-id(macOS 需通过 Homebrew 安装)
brew install ssh-copy-id
ssh-copy-id user@server

3. 配置别名(简化连接)

编辑 ~/.ssh/config

Host myserver
  HostName 192.168.1.100
  User alice
  Port 22
  IdentityFile ~/.ssh/id_ed25519

之后只需:

ssh myserver

4. 使用 SSH Agent(自动管理密钥)

# 启动 agent 并添加密钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# 查看已加载密钥
ssh-add -l

💡 macOS 会自动集成钥匙串,可设置密钥密码自动解锁:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

🛡️ 五、安全建议

  • ✅ 使用 密钥认证,禁用密码登录(服务器端配置 PasswordAuthentication no
  • ✅ 使用强密钥(Ed25519 或 4096-bit RSA)
  • ✅ 不要共享私钥(~/.ssh/id_* 权限应为 600
  • ✅ 定期轮换密钥

📦 六、常用相关命令

命令 用途
ssh user@host 远程登录
scp file user@host:/path 安全复制文件
sftp user@host 交互式文件传输
ssh -L 8080:localhost:80 user@host 本地端口转发
ssh -i keyfile user@host 指定私钥文件

❓常见问题

Q:SSH 连接很慢?

A:检查 DNS 反向解析,可在服务器 /etc/ssh/sshd_config 中加:

UseDNS no

Q:如何退出 SSH 会话?

A:输入 exit 或按 Ctrl + D

Q:终端卡死无法退出?

A:按 Enter,然后输入 ~.(波浪号加点)强制断开


✅ 总结

  • 终端 = 本地命令行界面
  • SSH = 在终端中使用的远程安全连接工具
  • 最佳组合:终端 + SSH 密钥 + ~/.ssh/config 别名 → 高效、安全、免密登录

如果你有更具体的需求(比如:SSH 隧道、Git over SSH、连接 GitHub、跳板机等),欢迎继续提问!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容