客户端配置文件
最后更新于:2022-04-02 03:51:26
[TOC]
## 位置
- SSH 客户端的全局配置文件是 `/etc/ssh/ssh_config`
- 用户个人的配置文件在~/.ssh/config,优先级高于全局配置文件
`~/.ssh` 目录
```
~/.ssh/id_ecdsa:用户的 ECDSA 私钥。
~/.ssh/id_ecdsa.pub:用户的 ECDSA 公钥。
~/.ssh/id_rsa:用于 SSH 协议版本2 的 RSA 私钥。
~/.ssh/id_rsa.pub:用于SSH 协议版本2 的 RSA 公钥。
~/.ssh/identity:用于 SSH 协议版本1 的 RSA 私钥。
~/.ssh/identity.pub:用于 SSH 协议版本1 的 RSA 公钥。
~/.ssh/known_hosts:包含 SSH 服务器的公钥指纹。
```
### 主要配置命令
|配置|说明|
|---|---|
|AddressFamily inet: | 表示只使用 IPv4 协议。如果设为inet6,表示只使用 IPv6 协议。|
|BindAddress 192.168.10.235: | 指定本机的 IP 地址(如果本机有多个 IP 地址)。|
|CheckHostIP yes: | 检查 SSH 服务器的 IP 地址是否跟公钥数据库吻合。|
|Ciphers blowfish,3des: | 指定加密算法。|
|Compression yes: | 是否压缩传输信号。|
|ConnectionAttempts 10: | 客户端进行连接时,最大的尝试次数。|
|ConnectTimeout 60: | 客户端进行连接时,服务器在指定秒数内没有回复,则中断连接尝试。|
|DynamicForward 1080: | 指定动态转发端口。|
|GlobalKnownHostsFile /users/smith/.ssh/my_global_hosts_file: | 指定全局的公钥数据库文件的位置。|
|Host server.example.com: | 指定连接的域名或 IP 地址,也可以是别名,支持通配符。Host命令后面的所有配置,都是针对该主机的,直到下一个Host命令为止。|
|HostKeyAlgorithms ssh-dss,ssh-rsa: | 指定密钥算法,优先级从高到低排列。|
|HostName myserver.example.com: | 在Host命令使用别名的情况下,HostName指定域名或 IP 地址。|
|IdentityFile keyfile: | 指定私钥文件。|
|LocalForward 2001 localhost:143: | 指定本地端口转发。|
|LogLevel QUIET: | 指定日志详细程度。如果设为QUIET,将不输出大部分的警告和提示。|
|MACs hmac-sha1,hmac-md5: | 指定数据校验算法。|
|NumberOfPasswordPrompts 2: | 密码登录时,用户输错密码的最大尝试次数。|
|PasswordAuthentication no: | 指定是否支持密码登录。不过,这里只是客户端禁止,真正的禁止需要在 SSH 服务器设置。|
|Port 2035: | 指定客户端连接的 SSH 服务器端口。|
|PreferredAuthentications publickey,hostbased,password: | 指定各种登录方法的优先级。|
|Protocol 2: | 支持的 SSH 协议版本,多个版本之间使用逗号分隔。|
|PubKeyAuthentication yes: | 是否支持密钥登录。这里只是客户端设置,还需要在 SSH 服务器进行相应设置。|
|RemoteForward 2001 server:143: | 指定远程端口转发。|
|SendEnv COLOR: | SSH 客户端向服务器发送的环境变量名,多个环境变量之间使用空格分隔。环境变量的值从客户端当前环境中拷贝。|
|ServerAliveCountMax 3: | 如果没有收到服务器的回应,客户端连续发送多少次keepalive信号,才断开连接。该项默认值为3。|
|ServerAliveInterval 300: | 客户端建立连接后,如果在给定秒数内,没有收到服务器发来的消息,客户端向服务器发送keepalive消息。如果不希望客户端发送,这一项设为0。|
|StrictHostKeyChecking yes: | yes表示严格检查,服务器公钥为未知或发生变化,则拒绝连接。no表示如果服务器公钥未知,则加入客户端公钥数据库,如果公钥发生变化,不改变客户端公钥数据库,输出一条警告,依然允许连接继续进行。ask(默认值)表示询问用户是否继续进行。|
|TCPKeepAlive yes: | 客户端是否定期向服务器发送keepalive信息。|
|User userName: | 指定远程登录的账户名。|
|UserKnownHostsFile /users/smith/.ssh/my_local_hosts_file: | 指定当前用户的known_hosts文件(服务器公钥指纹列表)的位置。|
|VerifyHostKeyDNS yes: | 是否通过检查 SSH 服务器的 DNS 记录,确认公钥指纹是否与known_hosts文件保存的一致。|
### 本地主机设置
如: 用户个人的配置文件~/.ssh/config
```
Host *
Port 2222
Host remoteserver
HostName remote.example.com
User neo
Port 2112
```
- 表示 Host * 表示对所有连接生效
- Host remoteserver
表示只有连接 remoteserver 时候生效,且优先级高于 Host *
- remoteserver只是一个别名,具体的主机由HostName命令指定
- User和Port这两项分别表示用户名和端口
- 登录remote.example.com时,只要执行ssh remoteserver命令
';