SSH简介及两种远程登录的方法

SSH 简介及两种远程登录的方法

SSH 简介

SSH(Secure Shell,安全外壳协议)是一种加密的网络传输协议,用于在不安全的网络中为远程登录和其它网络服务提供安全保障。它由 IETF(互联网工程任务组)制定,目前最常用的是 SSH-2 版本(SSH-1 已废弃,因存在安全漏洞)。

核心特点

  • 加密通信:所有数据(包括用户名、密码、命令、文件传输)均加密传输,防止中间人窃听。
  • 身份验证:支持多种认证方式(密码、公钥等)。
  • 功能丰富:除了远程登录,还支持端口转发、X11 转发、SCP/SFTP 文件传输等。
  • 替代 Telnet 和 rlogin:Telnet 等旧协议明文传输,极不安全,已被 SSH 完全取代。

常见应用场景

  • 远程管理 Linux/Windows 服务器
  • 安全文件传输(配合 scp/sftp)
  • 内网穿透、跳板机
  • Git 远程仓库操作(git@github.com)

端口:默认 22(可自定义修改)

SSH 远程登录的两种主要方法

SSH 客户端登录服务器时,主要有两种认证方式

方法一:密码认证(Password Authentication,最简单)

原理:用户输入服务器上已设置的账户密码进行验证。

优点

  • 配置简单,无需额外准备。
  • 适合临时或初次登录。

缺点

  • 密码易被暴力破解(尤其是弱密码)。
  • 不适合自动化脚本(需交互输入密码)。

使用示例(Linux/macOS/Windows 10+ 自带 OpenSSH 客户端):

ssh username@server_ip
# 示例
ssh root@192.168.1.100
# 或指定端口
ssh -p 2222 user@example.com

首次连接会提示服务器指纹验证:

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

输入 yes 后,会将服务器公钥保存到本地 ~/.ssh/known_hosts

然后输入密码即可登录。

方法二:公钥认证(Public Key Authentication,最安全推荐)

原理

  1. 用户在本地生成一对密钥:私钥(id_rsa,保密)和公钥(id_rsa.pub)。
  2. 将公钥上传到服务器的 ~/.ssh/authorized_keys 文件中。
  3. 登录时,服务器用公钥验证本地私钥是否匹配,无需输入密码。

优点

  • 极高安全性(私钥不传输)。
  • 支持免密码登录,适合自动化脚本、Git 等。
  • 防止暴力破解。

缺点

  • 初次配置稍复杂。
  • 私钥丢失需重新配置。

配置步骤(以 Linux/macOS 为例):

  1. 本地生成密钥对(若已有可跳过):
   ssh-keygen -t ed25519 -C "your_email@example.com"
   # 或兼容性更好的 rsa(至少 3072 位)
   # ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

默认保存在 ~/.ssh/id_ed25519~/.ssh/id_ed25519.pub

  1. 将公钥上传到服务器(两种方式任选): 方式A:使用 ssh-copy-id(最方便)
   ssh-copy-id username@server_ip

会自动将公钥追加到服务器的 ~/.ssh/authorized_keys

方式B:手动上传

   # 本地查看公钥
   cat ~/.ssh/id_ed25519.pub
   # 复制内容,登录服务器(用密码方式)
   ssh username@server_ip
   # 在服务器上创建目录并写入
   mkdir -p ~/.ssh
   echo "你的公钥内容" >> ~/.ssh/authorized_keys
   chmod 700 ~/.ssh
   chmod 600 ~/.ssh/authorized_keys
  1. 登录测试(无需密码):
   ssh username@server_ip

直接进入,无需输入密码。

两种方法对比总结

项目密码认证公钥认证
安全性中等(易被暴力破解)高(私钥不传输)
配置难度简单稍复杂(需生成密钥)
是否需要交互需要输入密码无需密码(可自动化)
推荐场景临时登录、初次配置生产环境、日常管理、脚本
是否推荐长期使用不推荐强烈推荐

安全建议

  • 禁止 root 直接密码登录(修改 /etc/ssh/sshd_configPermitRootLogin prohibit-password)。
  • 禁用密码登录,只允许公钥(PasswordAuthentication no)。
  • 修改默认 22 端口(减少扫描攻击)。
  • 使用 Fail2Ban 等工具防暴力破解。

掌握这两种方法,你就能安全高效地管理远程服务器了!推荐所有服务器都配置公钥认证。

文章已创建 3707

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部