Loading... # SSH应用: 配置文件 ssh程序可以从以下途径获取配置参数: - 命令行选项 - 用户配置文件 (`~/.ssh/config`) - 系统配置文件 (`/etc/ssh/ssh_config`) 配置文件可分为多个配置区段,每个配置区段使用Host来区分。我们可以在命令行中输入不同的host来加载不同的配置段。 **对每一个配置项来说,首次获取的参数值将被采用,因此通用的设置应该放到文件的后面,特定host相关的配置项应放到文件的前面。** 实际开发工作场景, 为了优化远程开发体验, 推荐在个人的`~/.ssh/config`中配置常用的主机信息。 ## 常用配置项 下面介绍一些常用的SSH配置项: ### Host Host配置项标识了一个配置区段。 ssh配置项参数值可以使用通配符:`*`代表0~n个非空白字符,`?`代表一个非空白字符,`!`表示例外通配。 我们可以在系统配置文件中看到一个匹配所有host的默认配置区段: ```shell $ cat /etc/ssh/ssh_config | grep '^Host' Host * ``` 这里有一些默认配置项,我们可以在**用户配置文件**中覆盖这些默认配置。 ### GlobalKnownHostsFile 指定一个或多个全局认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为:/etc/ssh/ssh_known_hosts, /etc/ssh/ssh_known_hosts2. ### HostName 指定远程主机名,可以直接使用数字IP地址。如果主机名中包含 ‘%h’ ,则实际使用时会被命令行中的主机名替换。 ### IdentityFile 指定密钥认证使用的私钥文件路径。默认为`~/.ssh/id_rsa`, `~/.ssh/id_dsa`, `~/.ssh/id_ecdsa`, `~/.ssh/id_ed25519`中的一个。文件名称可以使用以下转义符: - '%d' 本地用户目录 - '%u' 本地用户名称 - '%l' 本地主机名 - '%h' 远程主机名 - '%r' 远程用户名 可以指定多个密钥文件,在连接的过程中会依次尝试这些密钥文件。 ### Port 指定远程主机端口号,默认为 22 。 ### User 指定登录用户名。 ### UserKnownHostsFile 指定一个或多个用户认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为: ~/.ssh/known_hosts, ~/.ssh/known_hosts2. 还有更多参数的介绍,可以参看用户手册: ```shell $ man ssh config ``` ## 完整配置示例 场景: 本地工作电脑记为主机A, 可以SSH直连机房远程主机B, 受限于(路由器/主机)防火墙, 无法直接SSH连接主机C, 但是主机B可以直接SSH连接主机C 假定主机A/B/C已经配置了同一套公钥和私钥, 且SSH服务对应的地址/端口/用户名/私钥分别为 - ssh.a.com, 22, user, ~/.ssh/id_rsa - ssh.b.com, 16185, root, /root/.ssh/id_rsa - ssh.c.com, 22, user, ~/.ssh/id_rsa 则, 主机A上直接SSH连接主机B以及以主机B作为跳板连接到主机C的 ### 配置文件方式 配置详情如下 ```shell vim ~/.ssh/config """ Host host_b HostName ssh.b.com User root Port 16185 IdentityFile "~/.ssh/id_rsa" Host host_c HostName ssh.c.com User user Port 22 IdentityFile "~/.ssh/id_rsa" ProxyCommand ssh -W %h:%p host_b """ ``` 使用配置文件登录: ```shell # SSH连接主机B $ ssh host_b # SSH连接主机C, 主机B作为跳板机 $ ssh host_c ``` ### 密码认证方式 ```shell # SSH连接主机B # ssh -p 16185 -i ~/.ssh/id_rsa root@ssh.b.com $ ssh -p 16185 root@ssh.b.com user@ssh.b.com's password: # SSH连接主机C, 指定主机B作为跳板机 # -J之前为最终的目标主机SSH连接信息 # -J之后为跳板机配置, 可以使用","指定多个 ssh user@ssh.c.com -p 22 -J root@ssh.b.com:16185 ``` ## 参考 1. https://daemon369.github.io/ssh/2015/03/21/using-ssh-config-file 2. https://zhuanlan.zhihu.com/p/74193910 THE END 本文作者:将夜 本文链接:https://zoe.red/2023/6.html 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。 最后修改:2024 年 01 月 04 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
这是一条测试评论, 显示IP归属地与设备 开心![](https://zoe.red/usr/themes/handsome/assets/img/emotion/twemoji/smile.png)