SSH是管理Linux服务器的必备技能,很多新手看到黑底白字的命令行就害怕。其实SSH很简单,这篇教程手把手教你连接服务器,附常用命令大全。
一、什么是SSH
SSH(Secure Shell,安全外壳协议)是一种加密的网络协议,用于远程登录服务器和执行命令。通过SSH,你可以在自己的电脑上远程控制千里之外的服务器,就像坐在服务器前操作一样。
- 加密传输:所有数据都加密,不怕被窃听
- 远程管理:随时随地管理服务器
- 高效操作:命令行比图形界面更高效
- 安全认证:支持密码和密钥两种认证方式
连接SSH需要三个信息:
- 服务器IP地址:如 1.2.3.4
- 端口号:默认22(部分服务商修改了端口)
- 用户名和密码:通常是root和你设置的密码
二、Windows连接服务器
Windows下有多种SSH客户端,推荐以下几种:
| 软件 | 特点 | 费用 | 推荐指数 |
|---|---|---|---|
| Xshell | 功能强大、界面友好、支持标签页 | 家庭/学生免费 | ⭐⭐⭐⭐⭐ 最推荐 |
| Putty | 轻量、免费、无需安装 | 完全免费 | ⭐⭐⭐⭐ 经典 |
| Windows Terminal | Win10/11自带、支持SSH命令 | 系统自带 | ⭐⭐⭐⭐ 方便 |
| MobaXterm | 集成SFTP、X11、多标签 | 免费版够用 | ⭐⭐⭐⭐ 功能全 |
2.1 Xshell连接步骤
- 下载安装Xshell(官网:https://www.xshell.com/,家庭/学生版免费)
- 打开Xshell,点击"新建"按钮
- 名称:随便填(如"我的服务器")
- 协议:SSH
- 主机:填写服务器IP地址
- 端口号:默认22(如果服务商改了端口,填对应端口)
- 点击"确定"保存
- 在会话列表中双击刚创建的会话
- 第一次连接会弹出"SSH安全警告",点击"接受并保存"
- 输入用户名(通常是root),回车
- 输入密码(输入时不显示字符,正常输入即可),回车
- 看到命令行提示符(如 [root@server ~]#),连接成功!
2.2 Windows Terminal(Win10/11自带)
打开Windows Terminal或CMD,输入:ssh root@1.2.3.4
如果端口不是22:ssh -p 端口号 root@1.2.3.4
第一次连接输入yes确认,然后输入密码即可。
三、Mac/Linux连接服务器
Mac和Linux系统自带SSH客户端,打开终端即可连接,不需要额外安装软件。
- 打开"终端"(Mac:启动台 → 其他 → 终端)
- 输入连接命令:
ssh root@1.2.3.4 - 如果端口不是22:
ssh -p 2222 root@1.2.3.4 - 第一次连接会提示"Are you sure you want to continue connecting",输入yes回车
- 输入密码(输入时不显示),回车
- 看到提示符,连接成功!
四、SSH密钥登录配置
密码登录不够安全,推荐使用SSH密钥登录,更安全且不需要每次输入密码。
- 在本地生成密钥对
Windows/Mac/Linux终端输入:ssh-keygen -t rsa -b 4096
一路回车(默认路径、不设密码短语)
生成两个文件:id_rsa(私钥,保存在本地)和 id_rsa.pub(公钥,上传到服务器) - 将公钥上传到服务器
方法一(推荐):ssh-copy-id root@1.2.3.4
方法二:手动将 ~/.ssh/id_rsa.pub 的内容追加到服务器的 ~/.ssh/authorized_keys 文件中 - 测试密钥登录
输入ssh root@1.2.3.4,不需要密码直接登录即成功 - 禁用密码登录(可选,更安全)
编辑服务器 /etc/ssh/sshd_config,将 PasswordAuthentication 改为 no
重启SSH服务:systemctl restart sshd
禁用密码登录前,务必确认密钥登录可以正常工作,否则会把自己锁在服务器外面!建议先保留密码登录,测试密钥登录几天后再禁用。
五、常用SSH命令
| 命令 | 作用 | 示例 |
|---|---|---|
ls | 列出文件和目录 | ls -la(详细列表) |
cd | 切换目录 | cd /www/wwwroot |
pwd | 显示当前路径 | pwd |
mkdir | 创建目录 | mkdir newfolder |
rm | 删除文件/目录 | rm file.txt / rm -rf folder |
cp | 复制文件 | cp a.txt b.txt |
mv | 移动/重命名 | mv a.txt /tmp/ |
cat | 查看文件内容 | cat file.txt |
vi/vim | 编辑文件 | vi file.txt(i进入编辑,:wq保存退出) |
systemctl | 管理服务 | systemctl restart nginx |
yum/apt | 安装软件 | yum install nginx / apt install nginx |
df -h | 查看磁盘空间 | df -h |
free -m | 查看内存使用 | free -m |
top | 查看系统状态 | top(q退出) |
wget | 下载文件 | wget https://example.com/file.zip |
tar | 压缩/解压 | tar -zxvf file.tar.gz |
chmod | 修改权限 | chmod 755 file.sh |
chown | 修改所有者 | chown www:www folder |
reboot | 重启服务器 | reboot |
shutdown | 关机 | shutdown -h now |
六、安全设置与FAQ
- 修改root密码:输入 passwd,设置强密码(大小写+数字+符号,12位以上)
- 创建普通用户:useradd username,passwd username,日常用普通用户登录
- 配置sudo权限:visudo,添加 username ALL=(ALL) ALL
- 修改SSH端口:编辑 /etc/ssh/sshd_config,修改 Port 22 为其他端口(如2222)
- 配置密钥登录:参考上文,禁用密码登录
- 配置防火墙:firewalld或iptables,只开放必要端口(22/80/443)
- 安装安全软件:fail2ban(防暴力破解)、防火墙、定期更新系统
Q:连接超时怎么办?
A:①检查服务器是否开机;②检查IP地址是否正确;③检查防火墙是否放行22端口;④检查安全组是否放行SSH端口;⑤ping服务器IP看是否通。
Q:密码正确但提示Permission denied?
A:①确认用户名正确(通常是root);②确认密码正确(注意大小写);③检查服务器是否禁止root登录(/etc/ssh/sshd_config中PermitRootLogin);④检查是否被fail2ban封禁(等待一段时间或在控制台解禁)。
Q:怎么上传文件到服务器?
A:可以用SFTP工具(如FileZilla、WinSCP、Xftp),用SSH的IP/端口/用户名/密码连接,然后拖拽文件上传。也可以用scp命令:scp localfile root@1.2.3.4:/path/。
Q:SSH连接经常断开怎么办?
A:在SSH客户端设置中开启"保持连接"(Keep Alive),设置间隔30秒。Xshell在会话属性 → 连接 → 保持连接状态中设置。也可以在服务器端修改 /etc/ssh/sshd_config,设置 ClientAliveInterval 60。