SSH 直接连接与配置速查

1. 直接连接

主流的 Linux 发行版和 Windows 都自带了 ssh,因此绝大多数情况下都可以直接使用。

usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address]
           [-c cipher_spec] [-D [bind_address:]port] [-E log_file]
           [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]
           [-J destination] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-P tag] [-p port] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           destination [command [argument ...]]
       ssh [-Q query_option]

有关 Linux 命令使用见:1. 预备知识

ssh [username]@[host ip or hostname]

这里ssh的默认端口是22,有一些VPS,云服务厂商会修改默认的ssh端口号,因此需要额外指定端口的OPTION

ssh -p 2222 [username]@[host ip or hostname]

配置.ssh

懒惰的开发人员肯定不想每次连接服务器都要输入这么多命令,因此只需要简单配置一下ssh的配置文件,即可实现快速登陆。

在 Windows 下,ssh 的配置文件在C:\Users\{username}\.ssh\config

在 Linux 下,ssh 的配置文件在~/.ssh/config

需要按照样板填入即可:

Host MacOS
  HostName 192.168.1.237
  User wayne
  IdentityFile ~/.ssh/id_ed25519

Host CC
  HostName cc.example.com
  User root
  Port 10086
  • Host: 主机名,可以自定义,目前相当于一个别名
  • HostName: 主机ip绑定主机 ip 的域名
  • User: 将要登陆的该主机上的用户,在 Linux 下一个系统可以拥有很多用户,此时要指定其中一个用户登陆
  • IdentityFile: 公私钥加密的私钥文件path
  • Port: 指定端口

2. SSH客户端

在现如今,为了方便登陆和管理多个 ssh 连接,更推荐的办法还是使用工具。

2.1. FinalShell

FinalShell下载官网

跨三平台,使用 Java 编写,有内置付费功能,但付费功能用途不大,推荐新手使用。

2.2. WindTerm

GitHub官网

对 Windows 高度适配的 Terminal 客户端,同样跨三平台,自定义功能多。

2.3. VS Code

3. 配置公私钥

公私钥登录 vs 密码登录:到底差在哪?

1. 验证方式不一样(原理差别)

密码登录

你连上服务器 → 服务器说“报暗号” → 你把密码发过去 → 服务器验证对不对。
整个过程就像:
“门卫问你密码,你直接说出来。门卫记得对照一下,是你就放你进来。”

缺点显而易见:
密码是传过去的,中途要是有人窃听、截包,理论上就可能被偷走。

公私钥登录

你有一对钥匙:公钥(放服务器)+ 私钥(你自己保管)
本质是个非对称加密:
你连上服务器 → 服务器给你出一道“只有私钥才能解”的题 → 你成功解出来 → 服务器确认你身份。
整个过程像:
“门卫给你一把奇怪的锁,你能用你自己的钥匙把它打开,就证明你就是房主。”

好处是:
不会把钥匙(私钥)传出去,只展示你能“开锁”。
中间人截消息也没用。

2. 安全性差距巨大

密码登录:

  • 密码强度不够容易被暴力破解(撞库、爆破)。

  • 密码可被钓鱼、窃听、键盘记录器偷走。

  • 很多人习惯多站点复用密码,风险更大。

公私钥登录:

  • 私钥长度巨大(Ed25519 或 4096-bit RSA),暴力破解基本不可能

  • 私钥不会在网络上传输,拦截流量也没意义。

  • 可以设置私钥密码(passphrase),双保险。

一句话:
密码登录像用四位数密码锁门,公私钥登录像用银行金库级别的锁。

3. 使用体验的区别

密码登录:

每次都得输密码,尤其 SSH 登录频繁时非常麻烦。

公私钥登录:

  • 私钥在本地,一般不用输密码(除非设置了私钥 passphrase)。

  • ssh-agent 帮你记住密钥,一整天不用重复认证。

就像:
密码登录每次走大门都要“查身份证”,公私钥登录直接刷卡过闸。

4. 管理上的区别

密码登录

  • 多人共用一个帐号时,只能共用同一个密码。

  • 修改密码会影响所有人。

  • 不便于审计。

公私钥登录

  • 每个人一把自己的公钥 → 分发到服务器。

  • 某个人离职/撤销权限 → 直接删掉那个人的公钥即可。

  • 不影响其他人。

  • 更安全、可控。

这个区别超级关键,尤其多人维护服务器的时候。

5. 常见实际使用场景

  • 线上生产服务器:绝大多数会关闭密码登录,只允许公私钥。

  • Git(GitHub/GitLab):默认也是公私钥。

  • 自动化脚本/CI/CD:很难存密码,基本都是用 SSH Key。

基础配置

SSH 公私钥配置流程

4. SSH 进阶配置

1. 修改默认端口

2. 配置防火墙