欢迎光临
我们一直在努力

SSH入门:像本地操作一样,安全访问你的远程服务器

当你第一次通过SSH登录到千里之外的服务器,看着熟悉的命令行界面,会有一种“原来世界可以这么小”的奇妙感觉。

想象一下这个场景:

你在家里,公司有一台服务器需要紧急修改配置;或者你在本地写完了一个部署脚本,需要把它传到云服务器上运行;又或者,你正在配置一台刚刚创建的远程机器,安装软件、创建用户……

这时候,你需要的不是飞到机房,而是一个叫SSH的神奇工具。


一、SSH是什么?为什么叫“安全外壳”?

SSH全称Secure Shell(安全外壳),是一种加密网络协议,用于通过互联网安全地访问远程服务器的命令行。

名字里的“安全”和“外壳”都很形象:

  • 安全:你和服务器之间的所有通信都是加密的,别人偷看也看不懂

  • 外壳:你像“钻进”了远程服务器的一个外壳,在里面执行命令,就像在本地一样

对于DevOps工程师来说,SSH是每天都要用的工具——因为绝大多数服务器操作,都是通过SSH完成的。

SSH默认端口:22

SSH服务默认运行在22号端口。这意味着:

  • 连接远程服务器前,必须在防火墙中开放22端口

  • 因为SSH权限极高(能操作整个系统),防火墙最好配置IP白名单,只允许你(或你的团队)的IP访问,禁止陌生IP尝试连接


二、两种登录方式:密码 vs 密钥

方式一:用户名+密码

这是最基础的方式:

ssh root@64.225.108.160

输入密码,回车,就连上了。简单直接,但有两个问题:

  • 每次都要输密码,麻烦

  • 密码有可能被暴力破解(如果防火墙没限制IP)

方式二:SSH密钥对(推荐)

这是生产环境的标准做法,更安全,还能免密登录。

密钥对是什么?

SSH密钥对由两个文件组成:

  • 私钥(Private Key):保存在你的本地机器,绝对不要分享给任何人

  • 公钥(Public Key):可以公开,把它放到远程服务器上

工作原理

你把公钥添加到远程服务器的“信任列表”后,下次连接时:

  • 客户端用私钥“打招呼”

  • 服务器检查这个私钥是否匹配它保存的公钥

  • 匹配成功 → 自动登录成功

  • 整个过程不用输密码,而且私钥永远不出本地,比密码更安全。


    三、实战:从零开始配置SSH免密登录

    我们用一个完整的例子,在云服务器上演示一遍。

    第一步:创建云服务器

    在DigitalOcean(或其他云平台)创建一台Ubuntu服务器:

    • 选择“密码认证”,设置root密码

    • 创建完成后,你会得到一个公网IP,比如 64.225.108.160

    第二步:首次用密码登录

    ssh root@64.225.108.160

    第一次连接会提示确认服务器指纹,输入 yes,然后输入刚才设置的密码。成功后会看到远程服务器的命令行提示符——你已经钻进那台服务器了!

    第三步:在本地生成SSH密钥对

    另开一个本地终端窗口(不要退出远程连接),执行:

    ssh-keygen -t rsa

    一路回车就行(路径用默认,密码留空)。完成后,~/.ssh/目录下会多出两个文件:

    • id_rsa:私钥(留在本地)

    • id_rsa.pub:公钥(待会要传到服务器)

    第四步:把公钥添加到远程服务器

    查看本地公钥内容:

    cat ~/.ssh/id_rsa.pub

    复制全部输出。然后在远程服务器上(就是你刚才SSH登录进去的那个终端),编辑授权文件:

    vi ~/.ssh/authorized_keys

    把复制的公钥内容粘贴进去,保存退出。

    这一步相当于告诉服务器:“以后这个私钥的主人可以免密登录。”

    第五步:测试免密登录

    退出当前SSH连接(输入 exit),重新连接:

    ssh root@64.225.108.160

    这次应该直接登录成功,不用输密码了!🎉

    关于私钥路径的说明

    为什么没指定私钥也能连上?因为SSH默认会从 ~/.ssh/id_rsa 读取私钥。

    如果你有多个密钥对,或者私钥名字不是默认的,需要手动指定:

    ssh -i ~/.ssh/my_special_key root@64.225.108.160


    四、复制文件到远程服务器:scp命令

    现在你已经能免密登录了,接下来试试把本地文件传到服务器。

    scp(Secure Copy)是基于SSH的安全复制工具,用法和 cp 很像,只是目标地址变成了 用户名@服务器IP:路径。

    基本用法

    # 把本地的 test.sh 复制到远程服务器的 /root 目录
    scp test.sh root@64.225.108.160:/root

    如果用了非默认私钥,加 -i 参数:

    scp -i ~/.ssh/my_key test.sh root@64.225.108.160:/root

    完整演示

  • 在本地创建一个测试脚本 test.sh:

    echo '#!/bin/bash' > test.sh
    echo 'echo "Hello from remote server!"' >> test.sh

  • 用scp复制到服务器:

    scp test.sh root@64.225.108.160:/root

  • SSH登录服务器,执行脚本:

    ssh root@64.225.108.160
    chmod +x /root/test.sh
    /root/test.sh

  • 看到输出“Hello from remote server!”了吗?你的脚本已经成功在千里之外的服务器上运行了。


    五、自动化服务怎么用SSH?

    除了人工操作,自动化工具(比如Jenkins)也需要通过SSH连接服务器。

    配置方式和你刚才做的一模一样:

  • 在远程服务器创建一个专门的服务用户(比如 jenkins)

  • 在Jenkins所在机器生成SSH密钥对

  • 把公钥添加到 jenkins 用户的 authorized_keys 里

  • 之后Jenkins就可以自动免密连接、部署应用了。


    六、安全提醒

    SSH权限极高,能操作整个系统,所以:

    • 防火墙必须限制22端口的访问IP,只允许管理员IP连接

    • 私钥文件权限建议设为 600(仅自己可读写)

    • 永远不要分享私钥,也不要把私钥传到服务器上


    七、总结:一张图记住SSH核心

    你的本地电脑

    ├─ 有私钥 (~/.ssh/id_rsa)

    ├─ ssh root@服务器IP → 免密登录成功

    └─ scp 文件 root@服务器IP:/路径 → 文件安全送达

    远程服务器

    ├─ 有公钥 (~/.ssh/authorized_keys)

    ├─ SSH服务监听 22 端口

    └─ 防火墙只放行管理员IP

    核心命令速查:

    操作命令
    密码登录 ssh user@ip
    生成密钥对 ssh-keygen -t rsa
    指定私钥登录 ssh -i 私钥路径 user@ip
    复制文件到远程 scp 本地文件 user@ip:远程路径
    指定私钥复制 scp -i 私钥路径 本地文件 user@ip:远程路径

    SSH是你通往云端的第一把钥匙。掌握了它,你就拥有了操作任何远程服务器的能力——不管它在哪个城市、哪个国家,对你来说,都像本地机器一样触手可及。

    下次需要操作远程服务器时,记得用上今天学的免密登录和scp,省下输密码的时间,多喝杯咖啡吧。

    赞(0)
    未经允许不得转载:171主机测评 » SSH入门:像本地操作一样,安全访问你的远程服务器
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址