一、先判断你电脑有没有 SSH
在 Windows 的 PowerShell 或 CMD 输入:
ssh -V
如果能显示类似:
OpenSSH_for_Windows_x.x
说明已经安装好了,可以直接用。
Windows 10 1809 以后和 Windows Server 2019 以后,OpenSSH 已作为 Windows 的可选功能提供;微软官方建议通过"可选功能"或 PowerShell 安装 OpenSSH Client / Server。(Microsoft Learn)
二、Windows 安装 SSH 客户端
方法 1:图形界面安装
路径:
设置 → 应用 → 可选功能 → 添加可选功能 → 搜索 OpenSSH Client → 安装
安装后重新打开 PowerShell,输入:
ssh -V
方法 2:PowerShell 安装
用管理员身份打开 PowerShell,先检查状态:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
如果 OpenSSH Client 没有安装,执行:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
如果你想让这台 Windows 电脑也能被别人 SSH 连接,再安装服务端:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
这些是微软官方给出的 Windows OpenSSH 安装命令。(Microsoft Learn)
三、Linux 服务器安装 SSH 服务端
如果你的远程服务器是 Ubuntu/Debian:
sudo apt update
sudo apt install openssh-server -y
启动 SSH 服务:
sudo systemctl start ssh
sudo systemctl enable ssh
查看状态:
sudo systemctl status ssh
Ubuntu 官方文档说明,OpenSSH Server 的主要配置文件是:
/etc/ssh/sshd_config
也可以使用:
/etc/ssh/sshd_config.d/
放置模块化配置。(Ubuntu)
四、macOS 安装和开启 SSH
macOS 一般自带 SSH 客户端,直接在终端输入:
ssh -V
如果想让别人 SSH 连接你的 Mac:
系统设置 → 通用 → 共享 → 远程登录
Apple 官方文档说明,开启"远程登录"后,系统会显示用于登录这台 Mac 的 SSH 命令。(苹果支持)
五、SSH 基本连接命令
最基础格式:
ssh 用户名@服务器IP
例如:
ssh root@192.168.1.100
如果服务器 SSH 端口不是默认的 22,比如是 60000:
ssh -p 60000 用户名@服务器IP或域名
例如:
ssh -p 60000 wang@192.168.1.100
六、使用密钥登录 SSH
1. 在本机生成密钥
Windows / Linux / macOS 都可以用:
ssh-keygen -t ed25519 -C "your_email@example.com"
一路回车即可。默认会生成:
私钥:~/.ssh/id_ed25519
公钥:~/.ssh/id_ed25519.pub
私钥不能发给别人。
公钥可以放到服务器上。
2. 把公钥放到服务器
Linux/macOS 可以用:
ssh-copy-id -p 60000 用户名@服务器IP或域名
Windows 没有 ssh-copy-id 时,可以手动操作:
先查看公钥:
type $env:USERPROFILE\.ssh\id_ed25519.pub
复制输出内容,然后登录服务器,把它追加到:
~/.ssh/authorized_keys
服务器上执行:
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
粘贴公钥后保存,然后设置权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3. 用私钥连接服务器
ssh -i 私钥路径 -p 端口 用户名@服务器IP或域名
七、配置 SSH 免输长命令
Windows 的 SSH 配置文件通常在:
C:\Users\你的用户名\.ssh\config
Linux/macOS 在:
~/.ssh/config
例如你可以写:
Host my4090
HostName 192.168.1.100
User wang
Port 60000
IdentityFile C:\Users\dell\.ssh\4090_key.txt
以后连接只需要:
ssh my4090
八、常用 SSH 配置项
客户端 config 示例
Host server1
HostName 192.168.1.100
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
Host my4090
HostName 192.168.1.100
User wang
Port 60000
IdentityFile C:\Users\dell\.ssh\4090_key.txt
ServerAliveInterval 60
ServerAliveCountMax 3
含义:
Host:连接别名
HostName:服务器 IP 或域名
User:用户名
Port:端口
IdentityFile:私钥路径
ServerAliveInterval:每隔多少秒发一次保活包
ServerAliveCountMax:连续几次无响应后断开
九、配置 SSH 服务端
Linux 服务器配置文件:
sudo nano /etc/ssh/sshd_config
常见配置:
Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
含义:
Port 22:SSH 端口
PermitRootLogin no:禁止 root 直接登录
PasswordAuthentication no:禁止密码登录,只允许密钥登录
PubkeyAuthentication yes:允许公钥登录
修改后重启 SSH:
sudo systemctl restart ssh
建议先开一个旧 SSH 窗口不要关,再开新窗口测试,防止配置错了把自己锁在服务器外面。
十、完整流程
假设你要连接服务器:
服务器地址:192.168.1.100
端口:60000
用户名:wang
私钥:C:\Users\dell\.ssh\4090_key.txt
1. 创建配置文件
打开:
C:\Users\dell\.ssh\config
写入:
Host my4090
HostName 192.168.1.100
User wang
Port 60000
IdentityFile C:\Users\dell\.ssh\4090_key.txt
ServerAliveInterval 60
2. 连接服务器
ssh gpu4090
或者不用配置文件,直接连接:
ssh -i 私钥路径 -p 端口 用户名@服务器地址
十一、常见报错解释
| 报错 | 原因 | 解决 |
|---|---|---|
Connection timed out |
IP/端口不通、防火墙拦截、服务器没开 SSH | 检查端口、防火墙、服务状态 |
Connection refused |
服务器能访问,但 SSH 服务没监听该端口 | 检查 sshd 是否启动 |
Permission denied (publickey) |
密钥不对、公钥没放服务器、用户名错 | 检查私钥、公钥、用户名 |
Identity file not accessible |
私钥路径写错 | 用绝对路径 |
Bad owner or permissions |
Windows .ssh/config 或私钥权限不安全 |
用 icacls 修权限 |
Host key verification failed |
服务器指纹变化 | 谨慎删除 known_hosts 对应行 |