ssh user@host最基础的 SSH 登录形式。
约 1603 字大约 5 分钟
2026-01-20
SSH Secure Shell 是一种网络协议,用于计算机之间的加密登录。它是目前远程管理 Linux 服务器的首选方式。相比于早期的 Telnet,SSH 提供了更好的安全性,能够防止 DNS 欺骗和 IP 欺骗,并且传输的数据是经过加密的。
ssh user@host最基础的 SSH 登录形式。
ssh -p 2222 user@host当服务器不是 22 端口时使用。
scp file user@host:/path把本地文件复制到远程服务器。
ssh-copy-id user@host把本机公钥写入远程授权文件。
SSH (Secure Shell) 是一种网络协议,用于计算机之间的加密登录。它是目前远程管理 Linux 服务器的首选方式。相比于早期的 Telnet,SSH 提供了更好的安全性,能够防止 DNS 欺骗和 IP 欺骗,并且传输的数据是经过加密的。
在 Linux 系统中,OpenSSH 是 SSH 协议最常用的免费开源实现。大多数 Linux 发行版(如 Ubuntu, CentOS)默认都安装了 OpenSSH 客户端。
最基本的用法是指定用户名和主机地址进行登录:
ssh username@hostnameusername: 远程服务器的用户名hostname: 远程服务器的 IP 地址或域名提示
如果本地电脑的用户名与远程服务器的用户名一致,可以省略用户名,直接输入主机地址即可。
例如,本地用户名为 root,远程服务器也使用 root 登录,则可以直接执行:
ssh 192.168.1.100示例:
假设我们要以用户 root 登录 IP 为 192.168.1.100 的服务器:
如果是第一次连接该主机,终端会提示无法确认主机的真实性,指纹如下,是否继续?
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?此时输入 yes 并回车,SSH 会将该主机的指纹保存到本机的 ~/.ssh/known_hosts 文件中。接下来输入密码即可登录。
SSH 默认使用 22 端口。如果远程服务器修改了 SSH 端口(例如改为 2222),需要使用 -p 参数指定:
ssh -p 2222 [email protected]使用密码登录虽然简单,但每次都要输入密码比较繁琐,且存在暴力破解的风险。SSH 提供了更安全方便的密钥对认证方式(公钥/私钥)。
在本地机器上执行以下命令生成密钥对:
ssh-keygen -t rsa -b 4096或者使用更现代的算法 ed25519:
ssh-keygen -t ed25519命令执行过程中会询问保存路径(默认是 ~/.ssh/id_rsa)和是否设置 passphrase(私钥密码,可留空)。一路回车即可。
生成后,~/.ssh/ 目录下会出现两个文件:
id_rsa: 私钥(绝对不能泄露)id_rsa.pub: 公钥(可以公开,需要上传到服务器)使用 ssh-copy-id 命令是最简单的方法:
ssh-copy-id [email protected]如果服务器使用了非标准端口:
ssh-copy-id -p 2222 [email protected]手动复制方法: 如果本地没有 ssh-copy-id 命令,可以将公钥内容手动追加到服务器的 ~/.ssh/authorized_keys 文件中:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"配置完成后,再次尝试登录:
此时不再需要输入密码即可直接进入系统。
如果你需要管理多台服务器,或者服务器参数(用户、IP、端口、密钥路径)很长,记忆起来非常麻烦。通过配置 ~/.ssh/config 文件,可以为服务器设置别名。
编辑或创建配置文件:
vim ~/.ssh/config配置示例:
# 个人博客服务器
Host blog
HostName 47.100.1.1
User admin
Port 2222
IdentityFile ~/.ssh/id_blog_rsa
# 公司测试环境
Host dev
HostName 192.168.10.5
User developer配置完成后,只需要输入别名即可登录:
ssh blog
# 等同于 ssh -p 2222 -i ~/.ssh/id_blog_rsa [email protected]scp 命令基于 SSH 协议,用于在本地和远程之间安全地传输文件。
1. 从本地复制到远程
# 复制文件
scp local_file.txt [email protected]:/home/root/
# 复制目录(使用 -r)
scp -r local_folder user@hostname:/remote/path2. 从远程复制到本地
scp [email protected]:/home/root/remote_file.txt .authorized_keys,或者文件权限不对(.ssh 目录权限应为 700,authorized_keys 为 600)。SSH 失败时先看报错文字,不要反复重试密码。常见问题可以按这条线索排查:
| 报错或现象 | 常见原因 | 排查方向 |
|---|---|---|
Connection timed out | 网络不通、防火墙拦截 | ping、端口、安全组 |
Connection refused | 端口可达但 sshd 没监听 | systemctl status sshd、端口配置 |
Permission denied | 用户名、密码或密钥不对 | -v 查看认证过程 |
REMOTE HOST IDENTIFICATION HAS CHANGED | 主机指纹变化 | 确认是否重装或遭遇中间人风险 |
ssh -v user@host-v 会输出详细连接过程。看不懂全部内容也没关系,重点找它尝试了哪些密钥、最终在哪一步失败。
第一次连接服务器时,SSH 会记录主机指纹到 ~/.ssh/known_hosts。如果之后指纹变化,SSH 会警告你。这可能只是服务器重装,也可能是安全风险。
正确做法是先确认服务器确实变更过,再删除对应旧记录:
ssh-keygen -R hostname版权归属:Shuo Liu