SSH教程

2024-10-23

SSH(Secure Shell)是一种安全协议,用于在不安全的网络上安全地访问计算机。它主要用于远程登录和远程命令执行。下面是SSH的详细使用指南,包括所有基本指令和使用示例。

1. 安装SSH

在Linux上

大多数Linux发行版都预装了SSH。如果没有,可以使用以下命令安装:

  • Debian/Ubuntu:
    sudo apt update
    sudo apt install openssh-client openssh-server
    
  • CentOS/RHEL:
    sudo yum install openssh-clients openssh-server
    
  • Arch Linux:
    sudo pacman -S openssh
    

在macOS上

macOS默认安装了SSH客户端,可以通过终端直接使用。

在Windows上

Windows 10及更高版本内置了OpenSSH客户端。可以在“设置”中启用它,或者通过Windows PowerShell使用以下命令安装:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

2. 启动SSH服务(Linux服务器端)

安装完SSH后,需要启动SSH服务:

sudo systemctl start ssh

并设置为开机自启:

sudo systemctl enable ssh

3. SSH基本用法

连接到远程服务器

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

示例:

ssh user@192.168.1.10

使用自定义端口

如果SSH服务运行在非标准端口(默认端口是22),可以使用 -p 选项指定端口:

ssh -p port_number username@hostname

示例:

ssh -p 2222 user@192.168.1.10

4. 常用SSH指令

1. 切换用户

如果需要切换到其他用户,可以使用 su 命令:

su - username

2. 上传文件

使用 scp 命令(Secure Copy Protocol)从本地计算机上传文件到远程服务器:

scp local_file_path username@hostname:remote_file_path

示例:

scp /path/to/local/file.txt user@192.168.1.10:/path/to/remote/directory/

3. 下载文件

从远程服务器下载文件到本地计算机:

scp username@hostname:remote_file_path local_file_path

示例:

scp user@192.168.1.10:/path/to/remote/file.txt /path/to/local/directory/

4. 复制目录

使用 -r 选项递归复制目录:

  • 从本地复制到远程:
scp -r /path/to/local/directory username@hostname:/path/to/remote/
  • 从远程复制到本地:
scp -r username@hostname:/path/to/remote/directory /path/to/local/

5. SSH公钥认证

使用SSH公钥认证可以提高安全性,避免每次连接时输入密码。

生成SSH密钥对

在本地计算机上生成SSH密钥对:

ssh-keygen -t rsa -b 4096

按提示操作(可以直接回车使用默认设置),生成的密钥通常保存在 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)中。

将公钥复制到远程服务器

使用 ssh-copy-id 命令将公钥复制到远程服务器:

ssh-copy-id username@hostname

示例:

ssh-copy-id user@192.168.1.10

6. SSH配置文件

可以在 ~/.ssh/config 中配置SSH连接的别名和选项,简化命令。

示例配置

Host myserver
    HostName 192.168.1.10
    User user
    Port 2222

连接时只需使用:

ssh myserver

7. 其他常用选项

  • -v:显示详细的调试信息,用于调试连接问题。
  • -X:启用X11转发,允许在远程主机上运行图形应用程序。
  • -C:启用压缩。
  • -i:指定私钥文件。

示例:

ssh -v -X -i /path/to/private_key user@hostname

8. 退出SSH会话

在SSH会话中,可以使用以下命令退出:

exit

9. 查看SSH连接状态

使用 whow 命令查看当前登录的用户:

who
w

10. 常见故障排除

  • 连接超时:检查防火墙设置或SSH服务是否运行。
  • 权限拒绝:确保用户名和密码正确,或检查SSH密钥权限(私钥应为600)。
  • 无法找到主机:检查主机名或IP地址是否正确。

结论

SSH是一种强大且安全的远程访问工具。通过使用上述命令和技巧,您可以有效地管理远程系统。确保定期更新SSH客户端和服务器,以保护系统安全。