linux小白必知——SSH
SSH 入门指南:安全远程控制电脑的“加密隧道”
一、什么是 SSH?
SSH(Secure Shell) 是一种网络协议,它的作用是在两台电脑之间建立一条加密的隧道,让你可以安全地远程登录、执行命令、传输文件。所有的数据在传输过程中都是加密的,即使有人截获了数据包,也看不懂内容。
简单说:SSH 就是远程控制电脑的安全工具。
它主要用在 Linux 服务器、云主机、树莓派、路由器等设备上。如果要学习网站搭建、编程部署、服务器运维,SSH 是必须会的基础技能。
二、SSH 能用来干什么?
1. 远程登录服务器
这是最常用的功能。你可以坐在家里的电脑前,通过 SSH 连接到远在千里之外的服务器,然后像在服务器面前一样操作它。
比如,你买了一台云服务器,系统是 Linux,没有图形界面。你就可以用 SSH 登录上去,安装软件、配置环境、查看日志。
2. 远程执行命令
SSH 不仅可以打开一个交互式的命令行,还可以直接执行一条命令然后返回结果。比如你想查看服务器磁盘剩余空间,不用登录进去,直接一条命令:
ssh 用户名@服务器地址 "df -h"
服务器会执行 df -h 并把结果发回你的电脑。这对于批量管理多台服务器很有用。
3. 安全地传输文件
远程登录后,你可能需要把本地文件上传到服务器,或者从服务器下载文件。SSH 提供了两个配套工具:
-
scp:命令行复制文件,用法类似
cp。 -
sftp:交互式文件传输,类似 FTP 但走 SSH 加密通道。
有了它们,你就不需要用不安全的 FTP 了。
4. 建立“隧道”访问内网服务
有时候,服务器所在的网络里有一些服务(比如数据库、内部网站),你无法直接从外网访问。SSH 可以建立一个端口转发隧道,让你通过 SSH 连接安全地访问这些内网服务。这个功能稍微进阶,但非常强大。
5. 配合 Git 推送代码
很多程序员使用 GitHub、GitLab 时,选择用 SSH 方式推送代码。配置好 SSH 密钥后,每次 git push 都不需要输入密码,既方便又安全。
三、SSH 怎么用?(零基础快速上手)
第一步:你需要什么?
-
一台电脑:可以是 Windows、macOS 或 Linux。Windows 10 以后的版本自带 OpenSSH 客户端;macOS 和 Linux 自带终端和 SSH 命令。
-
一个远程服务器的 IP 地址和用户名:比如云服务器的公网 IP,用户名通常是
root或ubuntu。 -
密码或密钥:登录服务器用。
第二步:打开终端(命令行)
-
Windows:按
Win + R,输入cmd或powershell,回车。 -
macOS:打开“终端”应用。
-
Linux:打开任意终端模拟器。
第三步:执行连接命令
基本格式:
ssh 用户名@服务器IP
例如:
ssh root@192.168.1.100
如果服务器 SSH 端口不是默认的 22,需要加 -p 参数:
ssh -p 2222 root@192.168.1.100
第一次连接时,会看到类似提示:
The authenticity of host '192.168.1.100' can't be established. ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxx. Are you sure you want to continue connecting (yes/no)?
意思是:你第一次连接这台服务器,无法确认它的身份,问你是否继续。如果你确定服务器地址没错,输入 yes 回车。
然后会提示输入密码:
root@192.168.1.100's password:
输入密码(输入时屏幕不会显示任何字符,这是正常的,防止别人偷看),回车。
如果密码正确,你就成功登录了!现在你看到的命令行就是远程服务器的命令行,可以执行 ls、cd、mkdir 等命令。
第四步:退出登录
输入 exit 或按 Ctrl + D 即可断开连接。
四、文件传输:scp 和 sftp 简单用法
1. 用 scp 复制文件
上传本地文件到服务器:
scp 本地文件路径 用户名@服务器IP:远程目录
例如,把本地 test.txt 上传到服务器的 /home/user/ 目录:
scp test.txt user@192.168.1.100:/home/user/
下载服务器文件到本地:
scp 用户名@服务器IP:远程文件路径 本地目录
例如:
scp user@192.168.1.100:/home/user/test.txt ./
上传整个文件夹:加 -r 参数
scp -r 本地文件夹 user@192.168.1.100:/home/user/
2. 用 sftp 交互式传输
输入:
sftp user@192.168.1.100
登录后进入 sftp 交互界面,常用命令:
-
ls:查看远程目录 -
cd:切换远程目录 -
lls:查看本地目录 -
lcd:切换本地目录 -
put 文件名:上传文件 -
get 文件名:下载文件 -
exit:退出
五、用密钥登录:更安全更方便
密码登录每次都要输入,而且密码可能被暴力破解。更推荐的方式是密钥登录。
原理很简单:
-
你生成一对“钥匙”:私钥(自己留着,绝不能给别人)和公钥(放到服务器上)。
-
登录时,服务器用公钥加密一个挑战,你用私钥解密并回应,证明你是你。
-
私钥还可以设置一个“口令”(passphrase),即使私钥文件泄露,别人没有口令也用不了。
简单步骤:
-
生成密钥对(在本地执行):
ssh-keygen -t ed25519
一路回车即可(默认保存位置 ~/.ssh/id_ed25519)。如果想设置私钥口令,在提示时输入。
-
把公钥放到服务器(需要输入一次密码):
ssh-copy-id 用户名@服务器IP
执行后,输入服务器密码,公钥就会自动添加到服务器的 ~/.ssh/authorized_keys 文件。
-
测试免密登录:
ssh 用户名@服务器IP
如果不再提示输入密码(或者只提示输入私钥口令),就成功了。
以后登录这台服务器,就不用输密码了,既方便又安全。
六、新手注意事项(避坑指南)
1. 保护好你的私钥
私钥文件(通常是 ~/.ssh/id_ed25519)相当于你的身份凭证。不要把它发给别人,不要上传到网盘,不要复制到公共电脑。如果私钥泄露,别人就能登录你的服务器。
2. 第一次连接要核对指纹
前面提到第一次连接会显示一个指纹。这个指纹是服务器的“身份证”。如果你在云平台控制台创建服务器,通常可以在控制台看到 SSH 指纹。如果显示的指纹和控制台的不一致,说明可能有人冒充服务器(中间人攻击),不要继续连接。
3. 不要随意关闭防火墙或改端口
有些教程会教你修改 SSH 端口(从 22 改成其他端口)来避免扫描。对于新手来说,暂时不用改端口,因为改错了可能自己都连不上。更重要的是设置强密码或使用密钥登录,并保持防火墙只开放必要的端口。
4. 不要用 root 用户直接登录(进阶)
很多云服务器默认可以用 root 登录。虽然方便,但风险高——一旦密码泄露,攻击者就有最高权限。更好的做法是创建一个普通用户,用普通用户登录后,需要管理员权限时用 sudo 命令。但作为新手,可以先了解,后续再配置。
5. 服务器权限问题
如果你在服务器上用密钥登录失败,最常见的原因是文件权限不对。确保:
-
~/.ssh目录权限是 700 -
~/.ssh/authorized_keys文件权限是 600
可以用命令修改:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
6. 不要在生产服务器上随意测试危险命令
比如 rm -rf /(删除根目录所有文件)、mkfs(格式化磁盘)等。远程操作时,命令的执行结果和你本地一样,但影响的是服务器。操作前多确认。
7. 定期更新系统和 SSH 软件
保持 SSH 客户端和服务端软件更新,可以修复已知安全漏洞。在服务器上定期执行系统更新(比如 apt update && apt upgrade 或 yum update)。
七、总结
SSH 是每个接触服务器的人必须掌握的工具。它就像一个安全的遥控器,让你能远程操控远方的电脑。
对于新手,你只需要先记住:
-
连接:
ssh 用户名@服务器IP -
传文件:
scp或sftp -
更安全方便:配置密钥登录
-
保护私钥,核对指纹,别乱删东西
掌握这些,就可以开始探索远程服务器的世界了。随着使用深入,还会接触到端口转发、跳板机、配置文件等高级功能,但那些都不急于一时。先从简单的远程登录开始吧!
- 点赞
- 收藏
- 关注作者
评论(0)