SSH教程

SSH是Linux服务器远程连接的重要工具,本文详细介绍了SSH的安装、使用方法,包括密码登录、密钥登录(免密登录)、配置文件的使用,以及SSH隧道和端口转发的多种方式,适用于Windows、Linux和Mac平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ssh 是远程连接的利器, 可以说凡是涉及到 linux 服务器, ssh 就是一个绕不开的话题. 本文作为一个教程, 尽可能详细的帮助读者设置 ssh, 并给出一些常用的 ssh 配置方法 (主要用于 linux 系统的远程登录和文件传输).

1. 简介

ssh 分为两个部分, sshd 服务端和 ssh 客户端. sshd 通常在服务器上已经建好并处于可用状态, 因此本文只讨论 ssh 客户端, 即用户通过 ssh 客户端远程连接到服务器上进行操作.

ssh 是一个多平台软件, 在 Windows/Linux/Mac 上均有相应的程序.

  • Windows 下 (以 Win11 为例), 右键开始菜单, 打开【Windows 终端】(Win10 下是打开 【PowerShell】), 输入 Get-Command ssh 即可查看到 ssh 的安装路径在什么位置, 比如:
C:\Windows\System32\OpenSSH\ssh.exe

此时输入 ssh 回车, 如果有如下的返回结果, 则说明 ssh 已经正常安装了.

$ ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]

如果找不到 ssh, 则可以从 Github 下载 OpenSSH (选择 .msi 后缀的), 然后双击安装即可.

  • Linux 下, 通常默认就有 ssh

2. 使用方法

2.1 密码登录

执行以下命令, 然后输入密码, 即可通过密码登录到远程服务器.

ssh <用户名>@<服务器地址> -p <端口>

注意: 如果使用默认端口 22, 则 -p <端口> 可以不写.

2.2 密钥登录 (免密登录)

我们可以通过 ssh-keygen 来生成密钥对. 密钥对包含公钥和私钥, 创建密钥如下:

# Windows
ssh-keygen -t rsa -b 2048 -f C:\Users\<用户名>\.ssh\mykey

#
### SSH 使用教程概述 SSH(Secure Shell)是一种网络协议,用于安全地连接到远程计算机。它提供了加密通信通道,保护数据传输的安全性和隐私性。以下是关于 SSH 配置、使用以及常见功能的详细介绍。 --- #### 1. SSH 配置文件详解 SSH 的主要配置文件位于 `/etc/ssh/sshd_config`,这是 OpenSSH 服务的核心配置文件[^1]。通过编辑此文件可以调整 SSH 服务器的行为。一些常见的配置项包括: - **Port**: 设置 SSH 服务监听的端口号,默认为 `22`。 ```bash Port 22 ``` - **PermitRootLogin**: 控制是否允许 root 用户直接登录。建议将其设置为 `no` 或 `without-password` 来提高安全性[^2]。 ```bash PermitRootLogin no ``` - **PasswordAuthentication**: 是否允许密码认证。推荐禁用密码认证而改用密钥认证以增强安全性。 ```bash PasswordAuthentication no ``` 完成修改后需重启 SSH 服务使更改生效: ```bash sudo systemctl restart sshd ``` --- #### 2. 基本 SSH 登录操作 要通过 SSH 连接到远程主机,可以使用以下命令格式[^3]: ```bash ssh [username]@[hostname_or_ip] ``` 例如,如果目标 IP 地址为 `192.168.1.100` 并希望以用户 `john` 身份登录,则运行: ```bash ssh john@192.168.1.100 ``` 如果不指定用户名,系统会默认使用当前用户的名称尝试登录。 --- #### 3. 密钥认证方式 为了提升安全性,通常推荐使用基于公私钥对的身份验证替代简单的密码输入。具体步骤如下: - 在客户端生成一对 RSA/ECC 密钥: ```bash ssh-keygen -t rsa -b 4096 ``` - 将生成的公钥复制到目标服务器上的授权密钥列表中: ```bash ssh-copy-id user@remote_host ``` 之后再次尝试登录时无需再提供密码。 --- #### 4. 端口转发技术 SSH 支持多种类型的端口转发机制来实现复杂的网络需求: - **本地端口转发 (Local Forwarding)**: 把本地机器的一个端口映射至远端某地址和服务端口之间建立隧道。 ```bash ssh -L local_port:destination_address:destination_port remote_user@server_address ``` - **远程端口转发 (Remote Forwarding)**: 反向过程——让外部访问特定端口时实际请求被路由回发起者的内部资源。 ```bash ssh -R server_port:localhost:local_service_port remote_user@server_address ``` - **动态代理模式 (Dynamic Proxy Mode)**: 创建 SOCKS5 代理以便灵活处理多个目的地流量重定向。 ```bash ssh -D dynamic_proxy_port remote_user@server_address ``` --- #### 5. 图形界面支持与 X11 转发 某些情况下可能需要启动图形化应用程序跨网显示窗口内容,在这种场景下就需要开启 `-X` 参数或者更高级别的信任级别 `-Y`: ```bash ssh -X username@remote_server ``` 这使得任何 GUI 应用程序都能正常渲染于本地显示器之上。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值