凌峰创科服务平台

SSH远程连接Linux服务器如何操作?

目录

  1. 准备工作:你需要什么?
  2. 基本连接:首次连接
  3. 常用参数:更灵活的连接
  4. 安全配置:强化你的 SSH 服务器
  5. 高级技巧:提升你的工作效率
  6. 常见问题与解决方案

准备工作:你需要什么?

  • 客户端: 你的电脑,无论是 Windows, macOS 还是 Linux,都自带或可以轻松安装 SSH 客户端。
    • Windows 10/11: 已内置 OpenSSH 客户端(在 PowerShell 或 CMD 中使用 ssh 命令),旧版 Windows 可使用 PuTTYMobaXterm
    • macOS / Linux: 已内置 OpenSSH 客户端,直接打开终端即可。
  • 服务器: 一台开启了 SSH 服务的 Linux 服务器,它需要有一个 IP 地址(或域名)和可以登录的用户名。
  • 网络: 你的客户端电脑需要能够连接到服务器的 IP 地址(确保防火墙没有阻止 22 端口)。

基本连接:首次连接

这是最简单的连接方式,只需要服务器的 IP 地址和用户名。

SSH远程连接Linux服务器如何操作?-图1
(图片来源网络,侵删)

命令格式:

ssh username@server_ip_address

示例: 假设你的服务器 IP 是 168.1.100,用户名是 root,那么命令就是:

ssh root@192.168.1.100

首次连接提示: 当你第一次连接时,客户端会显示服务器的公钥指纹,并询问你是否信任该主机,这是因为 SSH 无法确认你连接的就是你想要连接的服务器(可能存在中间人攻击)。

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

输入 yes 并回车,该主机的密钥就会被保存在你本地的 ~/.ssh/known_hosts 文件中,下次连接就不会再提示了。

SSH远程连接Linux服务器如何操作?-图2
(图片来源网络,侵删)

输入密码: 连接成功后,系统会提示你输入该用户的密码,输入时不会显示任何字符(光标也不会移动),这是正常的安全设计,输完后按回车。

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


常用参数:更灵活的连接

SSH 命令支持很多参数,可以让你更高效、更安全地连接。

指定端口

默认情况下,SSH 服务运行在 22 端口,如果服务器修改了端口,你需要使用 -p 参数。

SSH远程连接Linux服务器如何操作?-图3
(图片来源网络,侵删)
ssh -p 2222 username@server_ip_address

使用密钥对进行免密登录

这是 SSH 最推荐的方式,比密码更安全、更方便。

步骤 1:在客户端生成密钥对 如果你的电脑上还没有 SSH 密钥,可以使用 ssh-keygen 生成,通常一路回车即可。

ssh-keygen -t ed25519 -C "your_email@example.com"

这会在 ~/.ssh/ 目录下生成两个文件:

  • id_ed25519: 你的私钥绝对不能泄露
  • id_ed25519.pub: 你的公钥,可以安全地分享给任何人。

步骤 2:将公钥复制到服务器 最简单的方法是使用 ssh-copy-id 命令。

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip_address

这个命令会自动将你的公钥追加到服务器上用户 username~/.ssh/authorized_keys 文件中,并设置好正确的权限。

步骤 3:使用密钥登录 你可以直接通过密钥登录,无需输入密码。

ssh -i ~/.ssh/id_ed25519 username@server_ip_address

如果你在生成密钥时使用了默认路径,并且设置了 SSH Agent,甚至可以省略 -i 参数。


安全配置:强化你的 SSH 服务器(重要!)

默认的 SSH 配置可能存在安全风险,建议进行以下优化,这些修改通常在服务器的 /etc/ssh/sshd_config 文件中完成。

禁用 root 用户直接登录 PermitRootLogin 设置为 no,强制使用普通用户登录,然后通过 sudo 提权。

PermitRootLogin no

使用非标准端口Port22 改成一个不常用的端口号(2222),可以减少被自动化扫描攻击的几率。

Port 2222

只允许密钥登录,禁用密码登录 这是提升安全性的关键一步,在确保密钥登录正常工作后,禁用密码登录。

PasswordAuthentication no
PubkeyAuthentication yes

限制登录用户 只允许特定用户通过 SSH 登录。

AllowUsers alice bob

使用 fail2ban 防暴力破解 fail2ban 是一个防止入侵的工具,它可以监控日志(如 SSH 登录失败日志),并在短时间内检测到多次失败后,自动封禁攻击者的 IP 地址。

应用配置: 修改完 /etc/ssh/sshd_config 后,必须重启 SSH 服务使配置生效。

# 对于使用 systemd 的系统 (如 Ubuntu 16+, CentOS 7+)
sudo systemctl restart sshd
# 或者
sudo service ssh restart

高级技巧:提升你的工作效率

通过 SSH 隧口转发

SSH 可以安全地“隧道化”其他网络流量,常用于访问内网服务或绕过防火墙。

  • 本地端口转发: 将你本地电脑的一个端口,通过 SSH 服务器转发到远程服务器(或其内网)的另一个端口。

    # 将本地电脑的 8080 端口,转发到远程服务器 192.168.1.100 的 80 端口
    ssh -L 8080:192.168.1.100:80 username@ssh_server_ip

    之后,你在本地浏览器访问 http://localhost:8080,实际访问的是远程服务器的 80 端口。

  • 远程端口转发: 将远程服务器的一个端口,转发到你本地电脑的端口。

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

为了避免每次都输入冗长的命令,可以创建一个配置文件来管理不同的服务器连接。

编辑 ~/.ssh/config 文件(如果不存在则创建),添加如下内容:

# 服务器别名 myserver
Host myserver
    HostName 192.168.1.100
    User root
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    # 可选:每次连接都保持会话活跃
    ServerAliveInterval 60
# 服务器别名 work-laptop
Host work-laptop
    HostName 10.0.0.55
    User john

连接变得非常简单:

ssh myserver
ssh work-laptop

使用 tmuxscreen 保持会话

当你通过 SSH 连接服务器时,如果网络中断或关闭了终端窗口,你的会话就会被切断。tmuxscreen 可以解决这个问题。

  1. 安装:

    # Ubuntu/Debian
    sudo apt-get install tmux
    # CentOS/RHEL
    sudo yum install tmux
  2. 使用:

    • 连接服务器后,输入 tmux new -s my_session 创建一个名为 my_session 的新会话。
    • 你可以在这个会话中正常工作,即使你断开连接(按 Ctrl+B 然后按 D),这个会话也会在后台保持运行。
    • 下次连接时,输入 tmux attach -t my_session 就可以重新回到之前的会话。

常见问题与解决方案

  • 问题:ssh: connect to host ... port 22: Connection timed out

    • 原因: 无法连接到目标 IP 的 22 端口。
    • 解决:
      1. 检查服务器 IP 是否正确。
      2. 检查服务器是否正在运行。ping 一下服务器 IP。
      3. 检查服务器的防火墙(如 ufw, iptables)是否允许 22 端口的入站连接,在服务器上执行 sudo ufw allow 22
      4. 检查路由器或云服务商(如阿里云、腾讯云)的安全组是否开放了 22 端口。
  • 问题:Permission denied (publickey,password).

    • 原因: 认证失败。
    • 解决:
      1. 确认用户名和密码是否正确。
      2. 如果使用密钥登录,确认公钥是否已正确添加到 ~/.ssh/authorized_keys 文件中,并且该文件和 .ssh 目录的权限正确(authorized_keys 权限应为 600.ssh 目录权限应为 700)。
      3. 检查服务器 /etc/ssh/sshd_config 中的 PasswordAuthenticationPubkeyAuthentication 设置。
  • 问题:Could not resolve hostname ...

    • 原因: DNS 解析失败。
    • 解决: 检查你输入的域名或服务器 IP 是否正确,尝试用 ping IP 的方式确认网络是否可达。

场景 命令
基本连接 ssh user@ip
指定端口 ssh -p 2222 user@ip
密钥登录 ssh -i ~/.ssh/key user@ip
免密登录(配置后) ssh user@ip
配置文件别名 ssh myserver

掌握 SSH 是管理 Linux 服务器的基石,从简单的 ssh 命令开始,逐步过渡到密钥登录和配置文件,最后了解端口转发和会话持久化,你将能高效、安全地管理你的服务器。

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