客户端配置文件

最后更新于: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命令
';