ssh远程连接
远程登录命令
使用 ssh 命令可以安全地远程登录到另一台 Linux/Unix 服务器。基本格式如下:
1 | ssh [用户名@]主机地址 [-p 端口号] |
常用示例
- 使用默认端口(22)登录:
ssh root@192.168.1.100 - 指定其他端口:
ssh admin@example.com -p 2222 - 仅执行一条命令后退出:
ssh user@host 'ls -l'
常见选项
| 选项 | 说明 |
|---|---|
-p <port> |
指定远程服务器的端口(默认22) |
-i <keyfile> |
使用指定的私钥文件进行身份验证 |
-l <username> |
指定登录用户名(等价于 user@ 语法) |
-v |
显示详细调试信息(可加多个 v 增加详细度) |
-C |
压缩传输数据 |
-X |
启用 X11 图形界面转发 |
-N |
不执行远程命令(常用于端口转发) |
首次登录提示
第一次连接到某台主机时,ssh 会提示您确认远程主机的指纹:
1 | The authenticity of host '...' can't be established. |
输入 yes 并回车,该主机的指纹会被保存到 ~/.ssh/known_hosts,后续登录不再提示
免密登录设置
SSH 密钥设置流程:
- 创建密钥时自定义文件名
- 上传公钥到远程服务器
- 修改本地 config 文件
- 验证登录
创建密钥
可同时修改密钥文件名
可以在生成密钥时直接指定文件名,比如把默认的 id_ed25519 改成想要的名字:
1 | ssh-keygen -t ed25519 -f ~/.ssh/my_server_key -C "your_email@example.com" |
参数说明
-t ed25519:生成 ed25519 密钥,推荐使用-f ~/.ssh/my_server_key:指定密钥文件名-C "your_email@example.com":备注信息,可写邮箱或说明
生成后会得到:
- 私钥:
~/.ssh/my_server_key - 公钥:
~/.ssh/my_server_key.pub
如果你想要 RSA,也可以:
1 | ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_server_key -C "your_email@example.com" |
把公钥上传到远程服务器
方法 A:使用 ssh-copy-id(最方便)
1 | ssh-copy-id -i ~/.ssh/my_server_key.pub user@server_ip |
例如:
1 | ssh-copy-id -i ~/.ssh/my_server_key.pub root@192.168.1.100 |
它会把公钥自动追加到远程服务器的:
1 | ~/.ssh/authorized_keys |
方法 B:手动上传
如果没有 ssh-copy-id,可以手动执行:
先查看公钥内容:
1 | cat ~/.ssh/my_server_key.pub |
复制输出内容,然后登录服务器,在服务器上执行:
1 | mkdir -p ~/.ssh |
修改本地 SSH config 文件
如果你密钥文件名不是默认的 id_rsa / id_ed25519,建议在本地 ~/.ssh/config 中配置,免得每次都手动指定密钥。
编辑本地 config:
1 | vim ~/.ssh/config |
添加类似内容:
1 | Host myserver |
说明
Host myserver:你给这个服务器起的别名HostName:远程服务器 IP 或域名User:登录用户名IdentityFile:指定刚创建的私钥文件Port:SSH 端口,默认 22
设置 config 和私钥权限
SSH 对权限比较严格,建议执行:
1 | chmod 600 ~/.ssh/my_server_key |
使用配置好的别名连接服务器
之后可以直接:
1 | ssh myserver |
不需要再写完整 IP 和密钥路径了。
验证是否成功
如果配置成功,应该能直接登录服务器。
也可以用调试模式查看详细信息:
1 | ssh -v myserver |
如果你想重新生成一个“可改名”的密钥文件
也可以先删除旧密钥,再重新生成:
1 | rm -f ~/.ssh/my_server_key ~/.ssh/my_server_key.pub |
一个完整示例
假设你要连接服务器:
- 服务器 IP:
203.0.113.10 - 用户名:
ubuntu - 密钥名:
prod_key
生成密钥
1 | ssh-keygen -t ed25519 -f ~/.ssh/prod_key -C "prod" |
上传公钥
1 | ssh-copy-id -i ~/.ssh/prod_key.pub ubuntu@203.0.113.10 |
配置本地 ~/.ssh/config
1 | Host prod |
连接
1 | ssh prod |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 tsengcode!



