配置文件

SSH 程序可以从以下途径获取配置参数:

  1. 命令行选项
  2. 用户配置文件 (~/.ssh/config)
  3. 系统配置文件 (/etc/ssh/ssh_config)

配置文件可分为多个配置区段,每个配置区段使用 Host 来区分。我们可以在命令行中输入不同的 Host 来加载不同的配置段。

对每一个配置项来说,首次获取的参数值将被采用,因此通用的设置应该放到文件的后面,特定 Host 相关的配置项应放到文件的前面。

常用配置项

  • Host
    配置项标识了一个配置区段。
    ssh 配置项参数值可以使用通配符:* 代表 0~n 个非空白字符,? 代表一个非空白字符,! 表示例外通配。
  • HostName
    指定远程主机名,可以直接使用数字IP地址。如果主机名中包含 %h,则实际使用时会被命令行中的主机名替换。
  • User
    指定登录用户名。
  • Port
    指定远程主机端口号,默认为 22 。
  • IdentityFile
    指定密钥认证使用的私钥文件路径。默认为 ~/.ssh/id_dsa~/.ssh/id_ecdsa~/.ssh/id_ed25519~/.ssh/id_rsa 中的一个。文件名称可以使用以下转义符:
    %d 本地用户目录
    %u 本地用户名称
    %l 本地主机名
    %h 远程主机名
    %r 远程用户名
    可以指定多个密钥文件,在连接的过程中会依次尝试这些密钥文件。
  • GlobalKnownHostsFile
    指定一个或多个全局认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为:/etc/ssh/ssh_known_hosts/etc/ssh/ssh_known_hosts2
  • UserKnownHostsFile
    指定一个或多个用户认证主机缓存文件,用来缓存通过认证的远程主机的密钥,多个文件用空格分隔。默认缓存文件为:~/.ssh/known_hosts~/.ssh/known_hosts2
  • ForwardAgent yes
    允许ssh-agent转发
  • IdentitiesOnly
    指定ssh是否仅使用配置文件或命令行指定的私钥文件进行认证。值为yes或no,默认为no,该情况可在ssh-agent提供了太多的认证文件时使用
  • StrictHostKeyChecking
    ask:默认值,第一次连接陌生服务器时提示是否添加,同时如果远程服务器公钥改变时拒绝连接
    yes:不会自动添加服务器公钥到 ~/.ssh/known_hosts 中,同时如果远程服务器公钥改变时拒绝连接
    no:自动增加新的主机键到 ~/.ssh/known_hosts

示例

SSH 服务器: ssh.test.com
端口号: 2200
账户: user
密钥文件: ~/.ssh/id_rsa_test

密码认证登录方式

ssh -p 2200 -i ~/.ssh/id_rsa_test user@ssh.test.com
user@ssh.test.com's password:

密钥认证登录方式

ssh-copy-id -i ~/.ssh/id_rsa_test user@ssh.test.com
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@ssh.test.com's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'user@ssh.test.com'"
and check to make sure that only the key(s) you wanted were added.

ssh user@ssh.test.com

使用配置文件方式

有如下配置文件:

Host sshtest
HostName ssh.test.com
User user
Port 2200
IdentityFile ~/.ssh/id_rsa_test

Host ssttest2
HostName ssh.test2.com
User user2
Port 2345
IdentityFile ~/.ssh/id_rsa_test2

使用配置文件登录:

ssh sshtest