ssh 命令 #

基本介绍 #

ssh(Secure Shell)命令是一个用于在网络上安全地执行远程命令的程序。它提供了强大的身份验证机制和安全的通信通道,用于登录远程服务器、执行命令和传输文件。

基本语法 #

bash
ssh [选项] [用户]@[主机名或IP地址]

常用选项 #

选项 描述
-p <端口> 指定远程服务器的SSH端口号(默认22)
-i <私钥文件> 指定用于身份验证的私钥文件
-X 启用X11转发功能
-Y 启用受信任的X11转发功能
-C 启用压缩功能
-v 显示详细的调试信息
-t 强制分配伪终端
-L <本地端口>:<目标主机>:<目标端口> 建立本地端口转发
-R <远程端口>:<目标主机>:<目标端口> 建立远程端口转发
-D <本地端口> 建立动态端口转发(SOCKS代理)

示例 #

1. 基本登录 #

使用默认端口(22)登录远程服务器:

bash
ssh user@192.168.1.100

2. 指定端口登录 #

使用自定义端口登录远程服务器:

bash
ssh -p 2222 user@example.com

3. 使用私钥登录 #

使用SSH密钥对进行身份验证:

bash
ssh -i ~/.ssh/id_rsa user@example.com

4. 执行远程命令 #

在远程服务器上执行单个命令并返回结果:

bash
ssh user@example.com "ls -la"

5. 端口转发 #

本地端口转发 #

将本地端口8080转发到远程服务器的80端口:

bash
ssh -L 8080:localhost:80 user@example.com

远程端口转发 #

将远程服务器的8080端口转发到本地的80端口:

bash
ssh -R 8080:localhost:80 user@example.com

动态端口转发 #

创建一个SOCKS代理(端口1080):

bash
ssh -D 1080 user@example.com

高级用法 #

1. 使用SSH配置文件 #

创建或编辑 ~/.ssh/config 文件可以简化SSH连接:

bash
Host webserver
    HostName 192.168.1.100
    Port 2222
    User admin
    IdentityFile ~/.ssh/webserver_key
    ForwardX11 yes

然后可以使用简化命令登录:

bash
ssh webserver

2. 密钥生成和管理 #

生成新的SSH密钥对:

bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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

bash
ssh-copy-id user@example.com

3. 保持连接活跃 #

~/.ssh/config 中添加以下配置以保持长时间连接:

bash
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

注意事项 #

  1. 确保使用强密码或SSH密钥对进行身份验证
  2. 定期更新SSH客户端和服务器软件
  3. 考虑禁用root用户直接登录
  4. 使用防火墙限制SSH访问的IP地址
  5. 启用双因素认证(如果支持)

相关命令 #

  • scp: 安全地复制文件到远程服务器
  • sftp: 安全文件传输协议客户端
  • ssh-keygen: 生成SSH密钥对
  • ssh-copy-id: 将公钥复制到远程服务器
  • ssh-agent: SSH密钥代理
最后更新:2026-02-07