怎么用SSH连接服务器?从命令到排错的完整操作
SSH 是远程登录 Linux 服务器最常用的方式。
只要服务器开启了 SSH 服务、网络可达、账号密码或密钥正确,在本地终端执行一条 ssh 命令就能连上。
下面按实际操作顺序说明命令写法、密钥配置和常见连不上的排查方法。
连接前先确认三件事
SSH 连接失败多半是前提条件没满足,动手前先核对:
- 服务器 IP 和 SSH 端口:云服务器控制台一般能看到公网 IP,SSH 默认端口是
22,部分服务商或管理员会改成其他端口。 - 登录账号:常见的是
root,也可能是创建实例时设置的其他用户。密码或密钥要提前准备好。 - 网络放行:云服务器安全组或本机防火墙需要允许 TCP 22 端口(或自定义 SSH 端口)入站。
如果是刚买的云服务器,先在控制台确认实例处于运行中,并检查安全组规则是否放行了 SSH 端口。
用密码连接服务器
Windows 10/11、macOS 和 Linux 都自带 OpenSSH 客户端,直接在终端里执行:
ssh 用户名@服务器IP
例如:
ssh root@203.0.113.10
如果 SSH 端口不是 22,用 -p 指定:
ssh -p 2222 root@203.0.113.10
首次连接会出现类似 The authenticity of host ... can't be established 的提示,
输入 yes 回车,
再输入密码即可登录。密码输入时屏幕不会显示任何字符,
这是正常现象,
输完直接回车。
登录成功后,命令行提示符通常会变成 root@主机名:~# 这样的格式,说明已经进入服务器。
配置密钥登录,免密码更安全
密码登录容易遭遇暴力破解,生产服务器建议改用密钥认证。
在本地电脑生成密钥对(如果已有 ~/.ssh/id_ed25519 可跳过):
ssh-keygen -t ed25519 -C "your_email@example.com"
一路回车,会在 ~/.ssh/ 下生成私钥 id_ed25519 和公钥 id_ed25519.pub。
私钥留在本地,不要发给任何人。
把公钥上传到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@203.0.113.10
如果本机没有 ssh-copy-id(比如部分 Windows 环境),可以手动把公钥内容追加到服务器的 ~/.ssh/authorized_keys 文件里。
之后再次执行 ssh root@203.0.113.10,应该不再提示输入密码。
确认密钥登录正常后,
再考虑在服务器 /etc/ssh/sshd_config 中关闭密码登录(PasswordAuthentication no),
修改后重启 SSH 服务生效。改配置前务必保持一个已登录的 SSH 会话不要关,
防止配置错误把自己锁在外面。
常见连接失败怎么排查
遇到报错不要反复重试,按下面顺序定位:
Connection refused:通常是 SSH 服务没启动,或端口写错。登录云控制台 VNC 进入服务器,执行systemctl status sshd(CentOS/RHEL 为sshd,Ubuntu/Debian 为ssh)查看服务状态,并用ss -tlnp | grep ssh确认监听端口。Connection timed out:网络不通或防火墙拦截。先ping 服务器IP看是否可达,再检查云安全组和服务器防火墙(如firewall-cmd --list-ports或ufw status)是否放行 SSH 端口。Permission denied (publickey,password):账号或认证方式不对。确认用户名拼写、密码正确;用密钥登录时检查私钥权限,Linux/macOS 下执行chmod 600 ~/.ssh/id_ed25519。Host key verification failed:服务器重装或 IP 复用导致本地记录的指纹不一致。确认服务器身份可信后,删除本地~/.ssh/known_hosts中对应条目再重连。
连接成功后的验证动作
登录后执行 whoami 和 hostname 确认当前用户和主机,执行 ip addr 或 ip a 查看网卡地址是否与目标服务器一致。
能正常执行命令、看到预期的目录和文件,才说明 SSH 连接真正可用,而不只是敲对了密码。
日常运维中,把常用服务器写进本地 ~/.ssh/config 可以简化命令:
Host myserver
HostName 203.0.113.10
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
之后直接 ssh myserver 就能连接。
几个容易踩的坑
- 把私钥上传到服务器或发给别人,等于把登录权限交出去。
- 修改 SSH 端口后忘记同步云安全组规则,导致连不上。
- 关闭密码登录前没有验证密钥登录可用,结果被锁在服务器外。
- 在服务器上直接改
sshd_config后没测试配置就重启,建议先执行sshd -t检查语法。
SSH 连接本身不复杂,关键是先确认网络和端口可达,再处理认证问题。
第一次连接成功后,建议顺手配置好密钥登录,后续远程管理会更省事也更安全。