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: 公私钥加密的私钥文件pathPort: 指定端口
2. SSH客户端
在现如今,为了方便登陆和管理多个 ssh 连接,更推荐的办法还是使用工具。
2.1. FinalShell
跨三平台,使用 Java 编写,有内置付费功能,但付费功能用途不大,推荐新手使用。
2.2. WindTerm
对 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 公私钥配置流程