使用'SSH config'文件
配置文件
ssh
程序可以从以下途径获取配置参数:
- 命令行选项
- 用户配置文件 (~/.ssh/config)
- 系统配置文件 (/etc/ssh/ssh_config)
配置文件可分为多个配置区段,每个配置区段使用Host
来区分。我们可以在命令行中输入不同的host
来加载不同的配置段。
对每一个配置项来说,首次获取的参数值将被采用,因此通用的设置应该放到文件的后面,特定host
相关的配置项应放到文件的前面。
常用配置项
下面介绍一些常用的SSH
配置项:
Host
Host
配置项标识了一个配置区段。
ssh
配置项参数值可以使用通配符:*
代表0~n个非空白字符,?
代表一个非空白字符,!
表示例外通配。
我们可以在系统配置文件中看到一个匹配所有host
的默认配置区段:
1 | $ cat /etc/ssh/ssh_config | grep '^Host' |
这里有一些默认配置项,我们可以在用户配置文件中覆盖这些默认配置。
GlobalKnownHostsFile
指定一个或多个全局认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为:/etc/ssh/ssh_known_hosts, /etc/ssh/ssh_known_hosts2.
HostName
指定远程主机名,可以直接使用数字IP地址。如果主机名中包含 ‘%h’ ,则实际使用时会被命令行中的主机名替换。
IdentityFile
指定密钥认证使用的私钥文件路径。默认为 ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 或 ~/.ssh/id_rsa 中的一个。文件名称可以使用以下转义符:
1 | '%d' 本地用户目录 |
可以指定多个密钥文件,在连接的过程中会依次尝试这些密钥文件。
Port
指定远程主机端口号,默认为 22 。
User
指定登录用户名。
UserKnownHostsFile
指定一个或多个用户认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为: ~/.ssh/known_hosts, ~/.ssh/known_hosts2.
还有更多参数的介绍,可以参看用户手册:
1 | man ssh config |
示例
- 以下连接为例:
1 | SSH 服务器: ssh.test.com |
密码认证登录方式为
1 | $ ssh -p 2200 -i ~/.ssh/id_rsa_test user@ssh.test.com |
密钥认证登录方式
1 | $ ssh-copy-id -i ~/.ssh/id_rsa_test user@ssh.test.com |
使用配置文件方式
- 有如下配置文件:
1 | $ vim ~/.ssh/config |
- 使用配置文件登录:
1 | ssh sshtest |
环境
1. Ubuntu
2. macOs High Sierra(10.13.2)