SSH(Secure Shell)是一种网络协议,用于安全地访问远程计算机。它使用加密技术来保护数据传输过程中的数据安全,防止数据在传输过程中被窃取或篡改。以下是一些基本的 SSH 命令和概念:
SSH 命令
ssh- 用于登录到远程服务器。
基本用法:ssh user@hostname
例如:ssh username@example.com 登录到 example.com 服务器,使用用户名 username。
scp- 安全地复制文件到或从远程计算机。
基本用法:scp local_file remote_user@remote_host:remote_file
例如:scp /path/to/local/file.txt username@example.com:/path/to/remote/ 将本地文件复制到远程服务器。
ssh-keygen- 生成 SSH 密钥对。
基本用法:ssh-keygen -t rsa
可以生成 RSA 密钥对,用于 SSH 认证。
ssh-copy-id- 将公钥复制到远程主机的authorized_keys。
基本用法:ssh-copy-id user@hostname
例如:ssh-copy-id username@example.com 将本地公钥复制到远程服务器。
ssh-agent- 一个程序,用于运行时保持私钥的加载状态,以便不需要每次输入密码。
ssh-add- 将私钥添加到ssh-agent。
基本用法:ssh-add /path/to/private_key
SSH 配置
SSH 配置文件通常位于~/.ssh/config,你可以在这个文件中定义多个主机的别名、用户名、端口号等信息,简化 SSH 命令的输入。
SSH 端口转发
SSH 还支持端口转发,这允许你通过 SSH 连接将远程服务转发到本地机器上。
本地端口转发:ssh -L local_port:remote_host:remote_port user@ssh_server
例如:ssh -L 8080:localhost:80 username@example.com 将远程服务器上的 HTTP 服务(端口 80)转发到本地的 8080 端口。
远程端口转发(也称为 SSH 隧道):ssh -R remote_port:localhost:local_port user@ssh_server
例如:ssh -R 9000:localhost:5000 username@example.com 将本地机器上的服务(端口 5000)通过 SSH 隧道转发到远程服务器的 9000 端口。
SSH 密钥管理
使用 SSH 密钥对认证可以避免每次连接都需要输入密码,提高安全性和便利性。
生成密钥对:ssh-keygen
复制公钥到远程服务器:ssh-copy-id
在远程服务器上配置 ~/.ssh/authorized_keys 以接受密钥登录。
SSH 安全性
使用强密码。
定期更换密码和密钥。
禁用 root 登录,使用普通用户并结合 sudo 进行管理。
配置 SSH 服务器以仅监听 localhost(127.0.0.1),并通过配置防火墙规则允许特定 IP 地址的访问。
SSH 是 Linux 系统管理员和开发人员远程管理和访问服务器的重要工具。