ssh config如何配置用host名替代root@1.1.1.1,以及如何配置通过跳板机登录?(~/.ssh/config、ProxyCommand、nc、免密配置)

懂的都懂,就不写前言后序了。作为一个简单记录

1. 用host名替代繁琐的root@1.1.1.1

1.1 要点

  • 场景:需要ssh root@1.1.1.1
  • 常规用法: ssh root@1.1.1.1
  • 配置后用法: ssh server1
  • 配置方式:打开 ~/.ssh/config
Host ser1
  HostName 192.168.101.81
  User root

1.2 实操:

修改:
在这里插入图片描述
简化登录方式:
在这里插入图片描述
当然为了免密登录更方便,需要配置一下ssh公钥,本文就详细介绍操作方式与原理了。

2. 对于需要跳板机才能登录的场景如何使用ssh一步登录?

<think> 我们正在讨论SSH钥生成和登录设置的相关命令。这两个命令是建立SSH登录的关键步骤。下面我将详细解释每个命令的作用、使用方法和注意事项。 ### 1. `ssh-keygen -t rsa` **作用**: 生成一对SSH钥(私钥和公钥)。`-t rsa`指定钥类型为RSA算法(目前推荐使用更安全的ed25519,但RSA仍广泛使用)。生成的钥默认保存在`~/.ssh/`目录下,其中: - `id_rsa`:私钥文件(必须严格保) - `id_rsa.pub`:公钥文件(可分发到远程服务器) **使用方法**: ```bash ssh-keygen -t rsa ``` 执行命令后,会提示以下信息(括号内为默认值): 1. 指定钥保存路径(直接回车使用默认路径`~/.ssh/id_rsa`) 2. 设置码(可选,直接回车表示不设置码) **注意事项**: - 如果已存在同钥,会提示是否覆盖(输入`y`确认覆盖) - 码用于加强私钥保护,每次使用钥时需输入(若留空则码使用钥) - 权限设置:生成后确保`~/.ssh`目录权限为700,私钥文件权限为600: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa ``` ### 2. `ssh-copy-id -i ~/.ssh/id_rsa.pub root@板卡B_IP` **作用**: 将本地公钥(`id_rsa.pub`)自动添加到远程服务器(板卡B)的`~/.ssh/authorized_keys`文件中,实现登录。 **使用方法**: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub root@板卡B_IP ``` 执行命令后: 1. 首次连接会提示确认远程主指纹(输入`yes`) 2. 需要输入远程服务器的`root`用户码(完成认证后自动追加公钥) **注意事项**: - 确保远程服务器SSH服务已启动(参考:`sudo systemctl status ssh`) - 如果远程服务器的`~/.ssh`目录不存在,命令会自动创建 - 若自定义SSH端口(非22),需添加`-p`参数: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 root@板卡B_IP ``` ### 完整操作流程示例 假设目标服务器IP为`192.168.1.100`: ```bash # 步骤1:本地生成钥(一路回车使用默认值) ssh-keygen -t rsa # 步骤2:复制公钥到远程服务器(需输入root码) ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.100 # 步骤3:测试登录 ssh root@192.168.1.100 ``` ### 故障排查 | 问题现象 | 解决方案 | |---------|---------| | `Permission denied (publickey)` | 检查远程服务器`/etc/ssh/sshd_config`中`PubkeyAuthentication`是否为`yes` | | 钥权限错误 | 本地执行:`chmod 700 ~/.ssh; chmod 600 ~/.ssh/*` | | 服务器`authorized_keys`权限问题 | 远程服务器执行:`chmod 600 ~/.ssh/authorized_keys` | > **安全提示**: > 生产环境建议使用普通用户代替`root`操作,并通过`sudo`提权[^1]。 §§相关问题§§ 1. 如何为SSH钥设置更安全的加算法(如ed25519)? 2. 如何手动配置SSH登录? 3. 如何解决`ssh-copy-id`连接超时问题? 4. 如何禁止SSH登录提升安全性? </think>### SSH钥生成与登录设置详解 #### 一、`ssh-keygen -t rsa` 命令解析 **作用**: 生成RSA非对称加钥对(公钥 + 私钥),用于SSH码认证。私钥保存在本地,公钥需传输到目标服务器。 **执行流程**: ```bash # 生成钥对(默认保存在~/.ssh目录) $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): # 直接回车使用默认路径 Enter passphrase (empty for no passphrase): # 设置钥保护码(可选) Enter same passphrase again: # 确认码 Your identification has been saved in /home/user/.ssh/id_rsa Your public key has been saved in /home/user/.ssh/id_rsa.pub ``` **生成的文件**: - `~/.ssh/id_rsa`:私钥文件(权限需设为600) - `~/.ssh/id_rsa.pub`:公钥文件(可公开) **注意事项**: 1. 钥保护码可为空实现完全,但会降低安全性 2. 不同钥类型选择: ```bash ssh-keygen -t ed25519 # 更安全的现代算法(推荐) ssh-keygen -t ecdsa # 椭圆曲线算法 ``` 3. 钥权限设置: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa # 必须限制私钥权限 ``` #### 二、`ssh-copy-id` 命令解析 **作用**: 将本地公钥自动添加到目标服务器的`~/.ssh/authorized_keys`文件中,建立信任关系。 **执行示例**: ```bash # 将公钥复制到192.168.1.100服务器(需输入目标服务器码) $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.100 ``` **等效的手动操作**: ```bash # 1. 将公钥内容追加到远程服务器的authorized_keys cat ~/.ssh/id_rsa.pub | ssh root@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" # 2. 设置远程服务器文件权限 ssh root@192.168.1.100 "chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys" ``` **关键参数**: ```bash -p 2222 # 指定非默认SSH端口(如-p 2222) -f # 强制覆盖已有公钥 ``` #### 三、完整操作流程 1. **生成钥对**: ```bash ssh-keygen -t rsa -b 4096 # 生成4096位钥 ``` 2. **复制公钥到目标服务器**: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip ``` 3. **测试登录**: ```bash ssh user@server_ip # 应直接登录无需码 ``` #### 四、安全注意事项 1. **服务器端配置**: ```bash # 修改/etc/ssh/sshd_config PubkeyAuthentication yes # 启用钥认证 PasswordAuthentication no # 禁用登录(增强安全) ``` 重启服务:`sudo systemctl restart sshd` 2. **多钥管理**: ```bash # ~/.ssh/config 配置文件示例 Host server1 HostName 192.168.1.100 User user1 IdentityFile ~/.ssh/server1_key Port 2222 ``` 3. **私钥备份**: ```bash # 加备份私钥 tar -czf - ~/.ssh | openssl enc -aes-256-cbc -out ssh_backup.tar.gz.enc ``` #### 五、故障排查 | 问题现象 | 解决方案 | |----------|----------| | `Permission denied (publickey)` | 检查目标服务器`~/.ssh/authorized_keys`权限是否为600 | | 连接超时 | 确认防火墙开放SSH端口:`sudo ufw allow 22/tcp` | | 提示`agent refused operation` | 执行`ssh-add ~/.ssh/id_rsa`添加钥到ssh-agent | > **生产环境建议**: > 避直接使用root账户,创建普通用户并配置sudo权限[^1],定期轮换钥(每3-6个月)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值