SSH(Secure Shell) 是一种网络协议,用于在不安全的网络中安全地访问远程计算机或服务器。它通过加密技术确保数据传输的安全性,广泛用于远程登录、文件传输和系统管理。

 1. SSH 的核心功能
 远程登录:通过 SSH 客户端连接到远程服务器,执行命令或管理服务器。
 文件传输:通过 SCP 或 SFTP 安全地传输文件。
 端口转发:通过 SSH 隧道安全地访问远程服务。
 密钥认证:使用公钥和私钥对进行身份验证,比密码更安全。

 2. SSH 的工作原理
SSH 使用客户端服务器模型,通过加密技术保护数据传输的安全性。

 2.1 加密技术
 对称加密:用于加密通信数据,客户端和服务器使用相同的密钥。
 非对称加密:用于身份验证和密钥交换,客户端和服务器使用公钥和私钥对。
 哈希算法:用于验证数据的完整性。

 2.2 连接过程
1. 客户端发起连接:客户端向服务器发起 SSH 连接请求。
2. 服务器响应:服务器发送自己的公钥给客户端。
3. 密钥交换:客户端和服务器协商一个对称加密密钥。
4. 身份验证:客户端通过密码或密钥对进行身份验证。
5. 建立会话:连接成功后,客户端可以在远程服务器上执行命令或传输文件。

 3. SSH 的基本用法

 3.1 远程登录
使用 ssh 命令连接到远程服务器:
bash
ssh username@hostname

 username:远程服务器的用户名。
 hostname:远程服务器的 IP 地址或域名。

示例:
bash
ssh user@192.168.1.100


 3.2 指定端口
如果 SSH 服务运行在非默认端口(默认是 22),可以使用 p 参数指定端口:
bash
ssh p 2222 user@hostname


 3.3 使用密钥认证
1. 生成密钥对:
   bash
   sshkeygen t rsa b 4096 C "your_email@example.com"
   
   生成的密钥对默认保存在 ~/.ssh/ 目录下:
    私钥:id_rsa
    公钥:id_rsa.pub

2. 将公钥上传到服务器:
   bash
   sshcopyid user@hostname
   
   或者手动将公钥内容添加到服务器的 ~/.ssh/authorized_keys 文件中。

3. 使用密钥登录:
   bash
   ssh i ~/.ssh/id_rsa user@hostname
   

 4. 文件传输

 4.1 SCP(Secure Copy)
使用 scp 命令在本地和远程服务器之间传输文件。

 从本地复制到远程:
  bash
  scp local_file user@hostname:/remote/directory
  

 从远程复制到本地:
  bash
  scp user@hostname:/remote/file /local/directory
  

 递归复制目录:
  bash
  scp r local_directory user@hostname:/remote/directory
  

 4.2 SFTP(Secure File Transfer Protocol)
使用 sftp 命令进行交互式文件传输:
bash
sftp user@hostname

在 SFTP 会话中,可以使用以下命令:
 get:从远程服务器下载文件。
 put:上传文件到远程服务器。
 ls:列出远程目录内容。
 cd:切换远程目录。

 5. SSH 配置文件
SSH 配置文件(~/.ssh/config)可以简化 SSH 连接的管理。

示例:
bash
Host myserver
    HostName 192.168.1.100
    User user
    Port 2222
    IdentityFile ~/.ssh/id_rsa

配置后,可以直接使用别名连接:
bash
ssh myserver


 6. SSH 端口转发
SSH 端口转发可以将本地端口映射到远程服务器端口,或者将远程服务器端口映射到本地端口。

 6.1 本地端口转发
将本地端口映射到远程服务器端口:
bash
ssh L 8080:localhost:80 user@hostname

访问 localhost:8080 相当于访问远程服务器的 localhost:80。

 6.2 远程端口转发
将远程服务器端口映射到本地端口:
bash
ssh R 8080:localhost:80 user@hostname

远程服务器访问 localhost:8080 相当于访问本地的 localhost:80。

 7. SSH 的安全性
 禁用密码登录:使用密钥认证代替密码登录。
 更改默认端口:将 SSH 服务的默认端口(22)更改为其他端口。
 限制登录用户:在 SSH 配置文件中限制允许登录的用户。
 使用防火墙:仅允许特定 IP 地址访问 SSH 服务。

 8. 常用 SSH 工具
 OpenSSH:最常用的 SSH 实现,支持 Linux、macOS 和 Windows(通过 WSL)。
 PuTTY:Windows 平台上的 SSH 客户端。
 MobaXterm:Windows 平台上的多功能远程工具,支持 SSH、SFTP 等。
 Termius:跨平台的 SSH 客户端,支持移动设备。

 总结
SSH 是一种强大的远程管理工具,通过加密技术确保数据传输的安全性。掌握 SSH 的基本用法和高级功能(如密钥认证、端口转发等),可以大大提高工作效率和系统安全性。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐