如何使用SSH登录远程服务器:分步指南 – wiki词典

Here’s a detailed guide on how to use SSH to log in to a remote server:


如何使用SSH登录远程服务器:分步指南

安全外壳协议(SSH)是一种加密网络协议,用于在不安全的网络上安全地操作网络服务。最常见的应用是远程命令行登录,但它也可以用于远程命令执行、隧道和端口转发。本文将提供一个详细的分步指南,教您如何使用SSH连接到远程服务器。

什么是SSH?为什么使用它?

SSH的主要目的是提供一种安全的方式来访问远程计算机。在没有SSH之前,远程登录通常使用Telnet等协议,这些协议以明文形式传输所有数据,包括用户名和密码,极易受到窃听。SSH通过加密客户端和服务器之间的所有通信来解决这个问题,确保了数据的机密性和完整性。

主要优势:
* 安全性: 所有数据传输都经过加密。
* 远程管理: 允许您从任何地方管理服务器。
* 文件传输: 可以与SCP(Secure Copy Protocol)和SFTP(SSH File Transfer Protocol)结合使用,安全地传输文件。
* 端口转发/隧道: 可以安全地将网络端口从本地转发到远程或从远程转发到本地,创建加密隧道。

前提条件

在开始之前,您需要确保具备以下条件:

  1. SSH客户端:
    • Linux/macOS: 大多数Linux发行版和macOS都预装了OpenSSH客户端,您可以通过终端直接使用。
    • Windows: Windows 10及更高版本通常内置了OpenSSH客户端。对于旧版本或偏好图形界面的用户,可以使用PuTTY等第三方工具。
  2. 远程服务器:
    • 服务器的IP地址主机名
    • 您在服务器上的用户名
    • 服务器的密码SSH密钥对(推荐)。
    • 服务器的SSH端口(默认为22,但有时会更改以提高安全性)。

步骤一:查找服务器信息

您需要从服务器提供商(如AWS, DigitalOcean, Google Cloud, Azure等)或系统管理员那里获取以下信息:

  • 主机地址: your_server_ip_address (例如: 192.168.1.100example.com)
  • 用户名: your_username (例如: root, ubuntu, ec2-user 或您创建的自定义用户)
  • 密码: 如果使用密码认证
  • 端口: 如果不是默认端口 22

步骤二:使用SSH登录(Linux/macOS 用户)

打开您的终端应用程序。

最基本的SSH命令

最常用的SSH命令格式是:

bash
ssh username@your_server_ip_address

示例:

bash
ssh [email protected]

或者,如果您的服务器有主机名:

bash
ssh [email protected]

首次连接时,您可能会看到一个警告,询问您是否信任该主机:

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

输入 yes 并按 Enter。这将把服务器的指纹添加到您的 ~/.ssh/known_hosts 文件中,下次连接时就不会再询问。

接下来,系统会提示您输入密码(如果您使用密码认证):

[email protected]'s password:

输入密码(输入时不会显示任何字符),然后按 Enter。如果密码正确,您就会登录到远程服务器的命令行界面。

指定端口

如果您的服务器使用非默认的SSH端口(例如2222),您需要使用 -p 选项指定端口:

bash
ssh -p 2222 username@your_server_ip_address

示例:

bash
ssh -p 2222 [email protected]

使用SSH密钥认证(推荐)

SSH密钥认证比密码认证更安全,因为它不需要您在每次登录时输入密码,并且密钥对更难以被暴力破解。

1. 生成SSH密钥对(如果您还没有):

在您的本地计算机上打开终端,运行以下命令:

bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"

  • -t rsa:指定密钥类型为RSA。
  • -b 4096:指定密钥长度为4096位(更安全)。
  • -C "[email protected]":添加注释,方便识别密钥用途。

系统会询问您将密钥保存在哪里(默认是 ~/.ssh/id_rsa),直接按 Enter 接受默认位置。然后,它会要求您输入一个密码短语(passphrase)。这是一个额外的安全层,即使私钥被盗,没有密码短语也无法使用。强烈建议设置一个密码短语。

生成完成后,您会在 ~/.ssh/ 目录下找到两个文件:
* id_rsa:您的私钥(绝不能分享!
* id_rsa.pub:您的公钥(可以安全地分享)

2. 将公钥复制到远程服务器:

使用 ssh-copy-id 命令将您的公钥自动复制到远程服务器的 ~/.ssh/authorized_keys 文件中。

bash
ssh-copy-id username@your_server_ip_address

示例:

bash
ssh-copy-id [email protected]

它会要求您输入远程服务器的密码。输入密码后,您的公钥就会被添加到服务器上。

如果服务器使用非默认端口,请这样使用:

bash
ssh-copy-id -p 2222 username@your_server_ip_address

如果您无法使用 ssh-copy-id(例如,某些旧系统没有),您可以手动复制公钥:

bash
cat ~/.ssh/id_rsa.pub | ssh username@your_server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

这个命令会先登录到服务器(需要密码),然后在服务器上创建 .ssh 目录(如果不存在),设置正确的权限,然后将您的公钥追加到 authorized_keys 文件中,并设置其权限。

3. 使用SSH密钥登录:

一旦公钥被复制到服务器上,您就可以像之前一样使用 ssh 命令登录,系统将不再提示您输入密码(如果设置了密码短语,会提示您输入密码短语)。

bash
ssh username@your_server_ip_address

如果您的私钥文件不在默认位置 (~/.ssh/id_rsa),您需要使用 -i 选项指定私钥路径:

bash
ssh -i /path/to/your/private_key username@your_server_ip_address

步骤三:使用SSH登录(Windows 用户)

选项A:使用内置的OpenSSH客户端(Windows 10/11)

Windows 10及更高版本通常内置了OpenSSH客户端。您可以通过PowerShell或命令提示符(CMD)使用它,操作与Linux/macOS非常相似。

  1. 打开PowerShell或CMD: 在开始菜单搜索 “PowerShell” 或 “CMD”。
  2. 检查OpenSSH是否安装: 在PowerShell中运行 Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'。如果 OpenSSH.Client~~~~0.0.1.0 显示 State : Installed,则已安装。如果未安装,可以使用 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 进行安装。
  3. 使用SSH命令: 命令格式与Linux/macOS相同。

    powershell
    ssh username@your_server_ip_address

    如果需要指定端口:

    powershell
    ssh -p 2222 username@your_server_ip_address

    对于SSH密钥,您可以在 %USERPROFILE%\.ssh\ 目录下放置您的 id_rsaid_rsa.pub 文件。如果您手动生成了密钥,可以直接将其放入此目录。使用 ssh-keygen 命令生成密钥的方式与Linux/macOS类似。将公钥复制到服务器可以使用与Linux/macOS相同的方法(如果Windows上的SSH客户端支持 ssh-copy-id,或手动复制)。

选项B:使用PuTTY

PuTTY是一款免费的SSH、Telnet和Rlogin客户端,在Windows上非常流行,尤其适用于旧版本的Windows或偏好图形界面的用户。

  1. 下载PuTTY: 访问PuTTY官方网站 (www.putty.org) 下载最新版本的 putty.exe
  2. 运行PuTTY: 双击下载的 putty.exe 文件。
  3. 配置会话:
    • 在 “Session” 类别下:
      • Host Name (or IP address): 输入您的服务器IP地址或主机名。
      • Port: 输入SSH端口(默认为22)。
      • Connection type: 选择 “SSH”。
    • 您可以为这个会话起一个名字(例如 “My Server”),并在 “Saved Sessions” 中点击 “Save” 保存,下次可以直接加载。
  4. 使用密码认证:
    • 点击 “Open”。
    • 会出现一个安全警告(首次连接时)。点击 “Accept”。
    • PuTTY会打开一个终端窗口,提示您输入用户名 (login as:),然后是密码 (password:)。
    • 输入正确信息后,您将登录到远程服务器。
  5. 使用SSH密钥认证(需要PuTTYgen):
    • 生成密钥(如果您还没有):
      • 下载并运行 puttygen.exe (通常与 putty.exe 一起提供)。
      • 选择 “RSA” 作为密钥类型,将 “Number of bits in a generated key” 设置为 2048 或 4096。
      • 点击 “Generate”,然后按照提示在窗口中移动鼠标以生成随机性。
      • 设置一个 “Key passphrase”(强烈建议)。
      • 点击 “Save private key” 将私钥保存为 .ppk 格式(这是PuTTY特有的格式)。
      • 复制生成的公钥(在 “Public key for pasting into OpenSSH authorized_keys file” 文本框中显示的内容)。
    • 将公钥添加到服务器:
      • 使用密码登录服务器。
      • 编辑或创建 ~/.ssh/authorized_keys 文件,将您复制的公钥粘贴进去。确保该文件和其父目录的权限正确 (chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys)。
    • 在PuTTY中配置私钥:
      • 返回PuTTY配置窗口。
      • 在左侧类别树中导航到 Connection -> SSH -> Auth
      • 点击 “Browse…” 按钮,选择您之前保存的 .ppk 私钥文件。
      • 回到 “Session” 类别,加载您保存的会话,然后点击 “Save” 更新配置。
      • 点击 “Open” 登录。如果私钥受密码短语保护,PuTTY会提示您输入密码短语。

常见问题与故障排除

  • “Connection refused”:
    • 服务器SSH服务可能未运行。
    • 防火墙阻止了连接(服务器端或客户端)。
    • 您输入的IP地址或端口不正确。
  • “Connection timed out”:
    • 服务器可能已关机或网络不通。
    • 服务器防火墙正在阻止连接。
    • 您输入的IP地址不正确。
  • “Permission denied (publickey,password)”:
    • 密码输入错误。
    • 用户名不正确。
    • SSH密钥认证失败(公钥未正确添加到服务器,或私钥权限不正确,或私钥未在客户端正确加载)。
    • 服务器可能配置为禁用密码或密钥认证。
  • “Host key verification failed”:
    • 通常发生在服务器的IP地址不变但SSH主机密钥发生变化时(例如,重新安装了操作系统)。
    • 您也可以通过删除 ~/.ssh/known_hosts 文件中对应服务器的行来解决,但请确保您知道自己在做什么,这会降低安全性。

调试提示:
在SSH命令后添加 -v-vv-vvv 可以显示更详细的调试信息,帮助您诊断连接问题。

bash
ssh -v username@your_server_ip_address

SSH最佳实践(安全提示)

  • 使用SSH密钥认证: 始终优先使用SSH密钥对而不是密码。
  • 设置密钥密码短语: 为您的私钥设置一个强大的密码短语。
  • 禁用密码认证: 在服务器上禁用密码认证(编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no 并重启SSH服务),只允许密钥认证。
  • 更改默认SSH端口: 将SSH服务从默认端口22更改为其他端口(编辑 /etc/ssh/sshd_config,设置 Port your_new_port_number 并重启SSH服务),这可以减少针对默认端口的自动化扫描攻击。
  • 限制root登录: 禁用root用户直接通过SSH登录(编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no)。创建一个普通用户,然后通过 sudo 执行需要root权限的操作。
  • 使用防火墙: 配置服务器防火墙(如ufwfirewalld),只允许特定IP地址或IP范围访问SSH端口。
  • 定期更新系统: 保持服务器操作系统和所有软件包(包括OpenSSH)最新。

结论

通过遵循本指南,您应该能够成功地使用SSH连接到您的远程服务器。SSH是服务器管理中不可或缺的工具,掌握它将大大提高您的工作效率和安全性。请记住,安全始终是第一位的,请务必遵循最佳实践。


`
This comprehensive guide covers the essential steps for both Linux/macOS and Windows users, including password and key-based authentication, troubleshooting, and security best practices.“`markdown

如何使用SSH登录远程服务器:分步指南

安全外壳协议(SSH)是一种加密网络协议,用于在不安全的网络上安全地操作网络服务。最常见的应用是远程命令行登录,但它也可以用于远程命令执行、隧道和端口转发。本文将提供一个详细的分步指南,教您如何使用SSH连接到远程服务器。

什么是SSH?为什么使用它?

SSH的主要目的是提供一种安全的方式来访问远程计算机。在没有SSH之前,远程登录通常使用Telnet等协议,这些协议以明文形式传输所有数据,包括用户名和密码,极易受到窃听。SSH通过加密客户端和服务器之间的所有通信来解决这个问题,确保了数据的机密性和完整性。

主要优势:
* 安全性: 所有数据传输都经过加密。
* 远程管理: 允许您从任何地方管理服务器。
* 文件传输: 可以与SCP(Secure Copy Protocol)和SFTP(SSH File Transfer Protocol)结合使用,安全地传输文件。
* 端口转发/隧道: 可以安全地将网络端口从本地转发到远程或从远程转发到本地,创建加密隧道。

前提条件

在开始之前,您需要确保具备以下条件:

  1. SSH客户端:
    • Linux/macOS: 大多数Linux发行版和macOS都预装了OpenSSH客户端,您可以通过终端直接使用。
    • Windows: Windows 10及更高版本通常内置了OpenSSH客户端。对于旧版本或偏好图形界面的用户,可以使用PuTTY等第三方工具。
  2. 远程服务器:
    • 服务器的IP地址主机名
    • 您在服务器上的用户名
    • 服务器的密码SSH密钥对(推荐)。
    • 服务器的SSH端口(默认为22,但有时会更改以提高安全性)。

步骤一:查找服务器信息

您需要从服务器提供商(如AWS, DigitalOcean, Google Cloud, Azure等)或系统管理员那里获取以下信息:

  • 主机地址: your_server_ip_address (例如: 192.168.1.100example.com)
  • 用户名: your_username (例如: root, ubuntu, ec2-user 或您创建的自定义用户)
  • 密码: 如果使用密码认证
  • 端口: 如果不是默认端口 22

步骤二:使用SSH登录(Linux/macOS 用户)

打开您的终端应用程序。

最基本的SSH命令

最常用的SSH命令格式是:

bash
ssh username@your_server_ip_address

示例:

bash
ssh [email protected]

或者,如果您的服务器有主机名:

bash
ssh [email protected]

首次连接时,您可能会看到一个警告,询问您是否信任该主机:

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

输入 yes 并按 Enter。这将把服务器的指纹添加到您的 ~/.ssh/known_hosts 文件中,下次连接时就不会再询问。

接下来,系统会提示您输入密码(如果您使用密码认证):

[email protected]'s password:

输入密码(输入时不会显示任何字符),然后按 Enter。如果密码正确,您就会登录到远程服务器的命令行界面。

指定端口

如果您的服务器使用非默认的SSH端口(例如2222),您需要使用 -p 选项指定端口:

bash
ssh -p 2222 username@your_server_ip_address

示例:

bash
ssh -p 2222 [email protected]

使用SSH密钥认证(推荐)

SSH密钥认证比密码认证更安全,因为它不需要您在每次登录时输入密码,并且密钥对更难以被暴力破解。

1. 生成SSH密钥对(如果您还没有):

在您的本地计算机上打开终端,运行以下命令:

bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"

  • -t rsa:指定密钥类型为RSA。
  • -b 4096:指定密钥长度为4096位(更安全)。
  • -C "[email protected]":添加注释,方便识别密钥用途。

系统会询问您将密钥保存在哪里(默认是 ~/.ssh/id_rsa),直接按 Enter 接受默认位置。然后,它会要求您输入一个密码短语(passphrase)。这是一个额外的安全层,即使私钥被盗,没有密码短语也无法使用。强烈建议设置一个密码短语。

生成完成后,您会在 ~/.ssh/ 目录下找到两个文件:
* id_rsa:您的私钥(绝不能分享!
* id_rsa.pub:您的公钥(可以安全地分享)

2. 将公钥复制到远程服务器:

使用 ssh-copy-id 命令将您的公钥自动复制到远程服务器的 ~/.ssh/authorized_keys 文件中。

bash
ssh-copy-id username@your_server_ip_address

示例:

bash
ssh-copy-id [email protected]

它会要求您输入远程服务器的密码。输入密码后,您的公钥就会被添加到服务器上。

如果服务器使用非默认端口,请这样使用:

bash
ssh-copy-id -p 2222 username@your_server_ip_address

如果您无法使用 ssh-copy-id(例如,某些旧系统没有),您可以手动复制公钥:

bash
cat ~/.ssh/id_rsa.pub | ssh username@your_server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

这个命令会先登录到服务器(需要密码),然后在服务器上创建 .ssh 目录(如果不存在),设置正确的权限,然后将您的公钥追加到 authorized_keys 文件中,并设置其权限。

3. 使用SSH密钥登录:

一旦公钥被复制到服务器上,您就可以像之前一样使用 ssh 命令登录,系统将不再提示您输入密码(如果设置了密码短语,会提示您输入密码短语)。

bash
ssh username@your_server_ip_address

如果您的私钥文件不在默认位置 (~/.ssh/id_rsa),您需要使用 -i 选项指定私钥路径:

bash
ssh -i /path/to/your/private_key username@your_server_ip_address

步骤三:使用SSH登录(Windows 用户)

选项A:使用内置的OpenSSH客户端(Windows 10/11)

Windows 10及更高版本通常内置了OpenSSH客户端。您可以通过PowerShell或命令提示符(CMD)使用它,操作与Linux/macOS非常相似。

  1. 打开PowerShell或CMD: 在开始菜单搜索 “PowerShell” 或 “CMD”。
  2. 检查OpenSSH是否安装: 在PowerShell中运行 Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'。如果 OpenSSH.Client~~~~0.0.1.0 显示 State : Installed,则已安装。如果未安装,可以使用 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 进行安装。
  3. 使用SSH命令: 命令格式与Linux/macOS相同。

    powershell
    ssh username@your_server_ip_address

    如果需要指定端口:

    powershell
    ssh -p 2222 username@your_server_ip_address

    对于SSH密钥,您可以在 %USERPROFILE%\.ssh\ 目录下放置您的 id_rsaid_rsa.pub 文件。如果您手动生成了密钥,可以直接将其放入此目录。使用 ssh-keygen 命令生成密钥的方式与Linux/macOS类似。将公钥复制到服务器可以使用与Linux/macOS相同的方法(如果Windows上的SSH客户端支持 ssh-copy-id,或手动复制)。

选项B:使用PuTTY

PuTTY是一款免费的SSH、Telnet和Rlogin客户端,在Windows上非常流行,尤其适用于旧版本的Windows或偏好图形界面的用户。

  1. 下载PuTTY: 访问PuTTY官方网站 (www.putty.org) 下载最新版本的 putty.exe
  2. 运行PuTTY: 双击下载的 putty.exe 文件。
  3. 配置会话:
    • 在 “Session” 类别下:
      • Host Name (or IP address): 输入您的服务器IP地址或主机名。
      • Port: 输入SSH端口(默认为22)。
      • Connection type: 选择 “SSH”。
    • 您可以为这个会话起一个名字(例如 “My Server”),并在 “Saved Sessions” 中点击 “Save” 保存,下次可以直接加载。
  4. 使用密码认证:
    • 点击 “Open”。
    • 会出现一个安全警告(首次连接时)。点击 “Accept”。
    • PuTTY会打开一个终端窗口,提示您输入用户名 (login as:),然后是密码 (password:)。
    • 输入正确信息后,您将登录到远程服务器。
  5. 使用SSH密钥认证(需要PuTTYgen):
    • 生成密钥(如果您还没有):
      • 下载并运行 puttygen.exe (通常与 putty.exe 一起提供)。
      • 选择 “RSA” 作为密钥类型,将 “Number of bits in a generated key” 设置为 2048 或 4096。
      • 点击 “Generate”,然后按照提示在窗口中移动鼠标以生成随机性。
      • 设置一个 “Key passphrase”(强烈建议)。
      • 点击 “Save private key” 将私钥保存为 .ppk 格式(这是PuTTY特有的格式)。
      • 复制生成的公钥(在 “Public key for pasting into OpenSSH authorized_keys file” 文本框中显示的内容)。
    • 将公钥添加到服务器:
      • 使用密码登录服务器。
      • 编辑或创建 ~/.ssh/authorized_keys 文件,将您复制的公钥粘贴进去。确保该文件和其父目录的权限正确 (chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys)。
    • 在PuTTY中配置私钥:
      • 返回PuTTY配置窗口。
      • 在左侧类别树中导航到 Connection -> SSH -> Auth
      • 点击 “Browse…” 按钮,选择您之前保存的 .ppk 私钥文件。
      • 回到 “Session” 类别,加载您保存的会话,然后点击 “Save” 更新配置。
      • 点击 “Open” 登录。如果私钥受密码短语保护,PuTTY会提示您输入密码短语。

常见问题与故障排除

  • “Connection refused”:
    • 服务器SSH服务可能未运行。
    • 防火墙阻止了连接(服务器端或客户端)。
    • 您输入的IP地址或端口不正确。
  • “Connection timed out”:
    • 服务器可能已关机或网络不通。
    • 服务器防火墙正在阻止连接。
    • 您输入的IP地址不正确。
  • “Permission denied (publickey,password)”:
    • 密码输入错误。
    • 用户名不正确。
    • SSH密钥认证失败(公钥未正确添加到服务器,或私钥权限不正确,或私钥未在客户端正确加载)。
    • 服务器可能配置为禁用密码或密钥认证。
  • “Host key verification failed”:
    • 通常发生在服务器的IP地址不变但SSH主机密钥发生变化时(例如,重新安装了操作系统)。
    • 您也可以通过删除 ~/.ssh/known_hosts 文件中对应服务器的行来解决,但请确保您知道自己在做什么,这会降低安全性。

调试提示:
在SSH命令后添加 -v-vv-vvv 可以显示更详细的调试信息,帮助您诊断连接问题。

bash
ssh -v username@your_server_ip_address

SSH最佳实践(安全提示)

  • 使用SSH密钥认证: 始终优先使用SSH密钥对而不是密码。
  • 设置密钥密码短语: 为您的私钥设置一个强大的密码短语。
  • 禁用密码认证: 在服务器上禁用密码认证(编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no 并重启SSH服务),只允许密钥认证。
  • 更改默认SSH端口: 将SSH服务从默认端口22更改为其他端口(编辑 /etc/ssh/sshd_config,设置 Port your_new_port_number 并重启SSH服务),这可以减少针对默认端口的自动化扫描攻击。
  • 限制root登录: 禁用root用户直接通过SSH登录(编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no)。创建一个普通用户,然后通过 sudo 执行需要root权限的操作。
  • 使用防火墙: 配置服务器防火墙(如ufwfirewalld),只允许特定IP地址或IP范围访问SSH端口。
  • 定期更新系统: 保持服务器操作系统和所有软件包(包括OpenSSH)最新。

结论

通过遵循本指南,您应该能够成功地使用SSH连接到您的远程服务器。SSH是服务器管理中不可或缺的工具,掌握它将大大提高您的工作效率和安全性。请记住,安全始终是第一位的,请务必遵循最佳实践。
“`

滚动至顶部