Manpages

SSH(1) BSD General Commands Manual SSH(1)

NAME

ssh — OpenSSH SSH 客 户 端 (远 程 登 录 程 序 ) 总 览 (SYNOPSIS)
ssh
[-l login_name] hostname | user@hostname [command]

ssh [-afgknqstvxACNTX1246] [-b bind_address] [-c cipher_spec] [-e escape_char] [-i identity_file] [-l login_name] [-m mac_spec] [-o option] [-p port] [-F configfile] [

-L 
port
:host:hostport ] [
-R 

port
:host:hostport ] [-D port] hostname user@hostname [command] 描 述 (DESCRIPTION)

ssh (SSH 客 户 端 ) 用 于 登 录 远 程 主 机 , 并 且 在 远 程 主 机 上 执 行 命 令 . 它 的 目 的 是 替 换 rlogin 和 rsh, 同 时 在 不 安 全 的 网 络 之 上 , 两 个 互 不 信 任 的 主 机 之 间 , 提 供 加 密 的 , 安 全 的 通 信 连 接 . X11 连 接 和 任 意 TCP/IP 端 口 均 可 以 通 过 此 安 全 通 道 转 发 (forward). 当 用 户 通 过 ssh 连 接 并 登 录 主 机 hostname 后 , 根 据 所 用 的 协 议 版 本 , 用 户 必 须 通 过 下 述 方 法 之 一 向 远 程 主 机 证 明 他 /她 的 身 份 :

SSH 协 议 第 一 版 第 一 , 如 果 发 出 登 录 命 令 的 本 地 主 机 已 经 列 在 远 程 主 机 的 /etc/hosts.equiv/etc/ssh/shosts.equiv 文 件 中 , 并 且 两 端 的 用 户 名 相 同 , 则 立 即 允 许 该 用 户 登 录 . 第 二 , 如 果 远 程 主 机 的 用 户 根 目 录 (home 目 录 ) 下 存 在 .rhosts.shosts, 并 且 其 中 有 一 行 包 含 了 客 户 机 的 名 字 和 客 户 机 上 的 用 户 名 , 则 允 许 该 用 户 登 录 . 一 般 来 说 , 服 务 器 不 允 许 单 独 使 用 这 种 认 证 方 式 , 因 为 它 不 安 全 . 第 二 种 认 证 方 法 是 rhostshosts.equiv 文 件 结 合 基 于 RSA 的 主 机 认 证 . 这 意 味 着 如 果 $HOME/.rhosts, $HOME/.shosts, /etc/hosts.equiv, 或 /etc/ssh/shosts.equiv 允 许 登 录 , 并 且 如 果 服 务 器 能 够 验 证 客 户 的 主 机 密 钥 (host key) (参 见 文 件 (FILE) 节 的 /etc/ssh/ssh_known_hosts$HOME/.ssh/known_hosts ), 主 机 才 允 许 客 户 登 录 . 这 个 认 证 方 法 关 闭 了 因 IP 欺 骗 , DNS 欺 骗 和 路 由 欺 骗 造 成 的 安 全 漏 洞 . [系 统 管 理 员 注 意 : 一 般 说 来 /etc/hosts.equiv, $HOME/.rhosts, 和 rlogin/rsh 协 议 的 本 质 是 不 可 靠 地 , 要 安 全 就 应 该 关 掉 它 们 .] 作 为 第 三 种 认 证 方 式 , ssh 支 持 基 于 RSA 的 认 证 . 这 种 方 案 依 托 于 公 开 密 钥 算 法 : 密 码 系 统 的 加 密 和 解 密 通 过 不 同 的 密 钥 完 成 , 无 法 通 过 加 密 密 钥 推 导 出 解 密 密 钥 . RSA 就 是 这 种 密 码 系 统 . 每 个 用 户 创 建 一 对 公 开 /私 密 钥 匙 用 于 认 证 . 服 务 器 知 道 用 户 的 公 钥 , 只 有 用 户 知 道 他 自 己 的 私 钥 . $HOME/.ssh/authorized_keys 文 件 列 出 允 许 登 录 的 (用 户 的 )公 钥 . 当 用 户 开 始 登 录 , ssh 程 序 告 诉 服 务 器 它 准 备 使 用 哪 对 钥 匙 (公 钥 )做 认 证 . 服 务 器 检 查 这 只 密 钥 (公 钥 )是 否 获 得 许 可 , 如 果 许 可 , 服 务 器 向 用 户 (实 际 上 是 用 户 面 前 运 行 的 ssh 程 序 ) 发 出 测 试 , 用 用 户 的 公 钥 加 密 一 个 随 机 数 . 这 个 随 机 数 只 能 用 正 确 的 私 钥 解 密 . 随 后 用 户 的 客 户 程 序 用 私 钥 解 出 测 试 数 字 , 即 可 证 明 他 /她 掌 握 私 钥 , 而 又 无 需 (把 私 钥 )暴 露 给 服 务 器 .

ssh 能 够 自 动 执 行 RSA 认 证 协 议 . 用 户 通 过 运 行 ssh-keygen(1) 创 建 他 /她 的 RSA 密 钥 对 . 私 钥 存 放 在 用 户 根 目 录 下 的 $HOME/.ssh/identity 中 , 而 公 钥 存 放 在 $HOME/.ssh/identity.pub 中 . 随 后 , 用 户 应 该 把 identity.pub 复 制 到 远 程 服 务 器 中 , 作 为 $HOME/.ssh/authorized_keys 存 放 到 他 /她 的 用 户 根 目 录 下 ( authorized_keys 对 应 传 统 的 $HOME/.rhosts 文 件 , 每 一 行 只 有 一 只 密 钥 , 尽 管 一 行 可 以 很 长 ). 用 户 无 须 密 码 就 可 以 直 接 登 录 . RSA 认 证 远 比 rhosts 认 证 安 全 .

RAS 认 证 最 便 捷 的 用 法 大 概 就 是 使 用 认 证 代 理 (authentication agent) 了 . 详 见 ssh-agent(1) 手 册 页 . 如 果 这 些 认 证 方 式 都 失 败 了 , ssh 就 提 示 用 户 输 入 口 令 (password), 然 后 把 口 令 送 到 服 务 器 做 验 证 . 由 于 整 个 通 信 过 程 是 加 密 的 , 因 此 别 人 不 可 能 通 过 侦 听 网 络 获 得 这 个 口 令 .

SSH 协 议 第 二 版 当 用 户 以 协 议 第 二 版 连 接 时 , 类 似 的 认 证 方 法 一 样 有 效 . 如 果 使 用 了 PreferredAuthentications 的 默 认 内 容 , 客 户 端 首 先 试 着 用 基 于 主 机 的 认 证 方 法 进 行 连 接 ; 如 果 这 个 方 法 失 败 了 就 用 公 开 密 钥 方 法 作 认 证 ; 最 后 , 如 果 它 也 失 败 了 , 就 进 入 键 盘 操 作 , 试 试 用 户 口 令 认 证 . 这 个 公 开 密 钥 方 法 类 似 于 上 一 节 描 述 的 RAS 认 证 , 并 且 允 许 使 用 RAS 或 DSA 算 法 : 客 户 端 用 他 的 私 钥 ( $HOME/.ssh/id_dsa$HOME/.ssh/id_rsa ) 对 会 话 标 识 符 (session identifier)签 名 , 然 后 把 结 果 送 到 服 务 器 . 服 务 器 检 查 $HOME/.ssh/authorized_keys 中 是 否 有 匹 配 的 公 钥 , 如 果 密 钥 和 签 名 都 正 确 , 访 问 就 可 以 继 续 进 行 . 会 话 标 识 符 来 自 共 享 的 Diffie-Hellman 值 , 只 有 客 户 端 和 服 务 器 端 才 知 道 这 个 值 . 如 果 公 钥 认 证 失 败 或 无 效 , 用 户 口 令 将 会 加 密 后 送 到 远 端 主 机 来 证 明 用 户 的 身 份 . 另 外 , ssh 支 持 基 于 主 机 或 测 试 应 答 的 认 证 方 式 . 协 议 第 二 版 提 供 附 加 机 制 增 强 保 密 性 (数 据 流 用 3DES, Blowfish, CAST128 或 Arcfour 加 密 ) 和 完 整 性 (hmac-md5, hmac-sha1). 注 意 , 协 议 第 一 版 缺 少 强 有 力 的 机 制 确 保 连 接 的 完 整 性 . 登 录 会 话 和 远 程 执 行 服 务 器 接 受 用 户 身 份 后 , 服 务 器 即 可 以 执 行 给 定 的 命 令 , 也 可 以 让 用 户 登 录 并 给 他 一 个 正 常 的 shell. 所 有 和 远 端 命 令 或 shell 的 通 信 被 自 动 加 密 . 如 果 分 配 了 伪 终 端 (pseudo-terminal)(普 通 的 登 录 会 话 ), 用 户 可 以 使 用 后 面 将 提 到 的 escape 字 符 . 如 果 没 有 分 配 伪 终 端 , 则 会 话 是 透 明 的 (transparent), 能 够 可 靠 的 传 送 二 进 制 数 据 . 大 多 数 系 统 上 , 即 使 分 配 了 终 端 , 把 escape 字 符 设 为 ’’none’’ 也 可 以 让 会 话 透 明 . 当 远 程 主 机 上 的 命 令 或 shell 退 出 时 , 会 话 即 结 束 , 并 关 闭 所 有 X11 和 TCP/IP 连 接 . 远 端 程 序 的 返 回 码 做 为 ssh 的 返 回 码 返 回 .

Escape 字 符 如 果 启 用 了 伪 终 端 , ssh 能 够 通 过 escape 字 符 支 持 一 组 功 能 . 单 独 的 波 浪 符 可 以 用 ~~ 送 出 去 , 只 要 后 面 不 跟 下 面 列 举 的 字 符 , 也 可 以 把 它 直 接 送 出 去 . escape 字 符 必 须 接 在 换 行 (newline)后 面 , 这 样 才 具 有 特 别 含 义 . 在 配 置 文 件 中 可 以 用 EscapeChar 命 令 更 改 escape 字 符 , 在 命 令 行 上 可 以 用 -e 选 项 更 改 . 已 支 持 的 escape 命 令 (假 设 是 默 认 的 ’~’) 有 :

~. 断 开 连 接

~^Z 把 ssh 送 到 后 台

~# 列 出 转 发 的 连 接 (forwarded connection)

~& 当 等 待 转 发 的 连 接 /X11会 话 结 束 时 , ssh 在 后 台 退 出 登 录

~? 显 示 escape 字 符 的 列 表

~C 打 开 命 令 行 (仅 用 于 -L-R 选 项 增 加 端 口 转 发 )

~R 请 求 连 接 的 重 建 (rekeying) (仅 用 于 SSH协 议 第 二 版 , 且 对 方 支 持 )

X11 和 TCP 转 发 (forwarding) 如 果 ForwardX11 变 量 设 为 ’’yes’’ (或 参 见 后 面 对 -X-x 选 项 的 描 述 ), 并 且 用 户 正 在 使 用 X11 (设 置 了 DISPLAY 环 境 变 量 ), 和 X11 显 示 器 的 连 接 将 自 动 以 这 种 形 式 转 发 到 远 端 : 任 何 用 shell 或 命 令 启 动 的 X11 程 序 将 穿 过 加 密 的 通 道 , 从 本 地 机 器 连 接 真 正 的 X 服 务 器 . 用 户 不 应 该 手 动 设 置 DISPLAY. 可 以 在 命 令 行 上 , 也 可 以 在 配 置 文 件 中 设 置 X11 连 接 的 转 发 .

ssh 设 置 的 DISPLAY 值 将 指 向 服 务 器 , 但 是 显 示 器 号 大 于 零 . 这 很 自 然 , 因 为 ssh 在 服 务 器 上 创 建 了 一 个 ’’proxy’’ X 服 务 器 , 把 连 接 通 过 加 密 通 道 转 发 出 去 .

ssh 将 自 动 在 服 务 器 上 设 置 Xauthority 数 据 . 目 的 是 这 样 的 : SSH 生 成 一 个 随 机 的 授 权 cookie, 存 放 在 服 务 器 的 Xauthority 中 . SSH 检 查 并 确 保 转 发 的 连 接 携 带 了 这 个 cookie, 打 开 连 接 后 , 把 它 替 换 为 真 正 的 cookie. 真 正 的 认 证 cookie 绝 不 会 送 往 服 务 器 (也 不 会 有 任 何 明 文 传 送 的 cookie). 如 果 ForwardAgent 变 量 设 为 ’’yes’’ (或 参 见 后 面 对 -A-a 选 项 的 描 述 ), 并 且 用 户 正 在 使 用 认 证 代 理 (authentication agent), 则 和 代 理 的 连 接 将 自 动 转 发 到 远 程 主 机 . 既 可 以 在 命 令 行 上 , 也 可 以 在 配 置 文 件 中 指 定 通 过 加 密 通 道 转 发 的 任 何 TCP/IP 连 接 . TCP/IP 转 向 的 应 用 有 , 比 如 说 , 和 电 子 钱 包 的 安 全 连 接 , 或 者 是 穿 过 防 火 墙 等 . 服 务 器 认 证
ssh
自 动 维 护 并 检 查 一 个 身 份 数 据 库 , 它 包 含 所 有 (成 功 )来 访 的 主 机 的 身 份 数 据 . 主 机 密 钥 存 放 在 用 户 根 目 录 下 的 $HOME/.ssh/known_hosts 文 件 中 . 另 外 , SSH 自 动 检 查 /etc/ssh/ssh_known_hosts 里 面 已 知 的 主 机 . 任 何 新 主 机 将 被 自 动 添 加 到 用 户 文 件 中 . 如 果 某 个 主 机 的 身 份 发 生 改 变 , ssh 就 会 发 出 警 告 , 并 且 关 闭 对 它 的 密 码 认 证 , 以 防 止 特 洛 伊 木 马 窃 取 用 户 密 码 . 这 个 机 制 的 另 一 个 目 的 是 防 止 中 间 人 攻 击 , 否 则 这 种 攻 击 可 能 会 绕 过 加 密 系 统 . StrictHostKeyChecking 选 项 用 来 防 止 登 录 到 主 机 密 钥 不 能 识 别 或 发 生 改 变 的 那 些 机 器 . 命 令 行 选 项 有 :

-a 禁 止 转 发 认 证 代 理 的 连 接 .

-A 允 许 转 发 认 证 代 理 的 连 接 . 可 以 在 配 置 文 件 中 对 每 个 主 机 单 独 设 定 这 个 参 数 . 代 理 转 发 须 谨 慎 . 某 些 用 户 能 够 在 远 程 主 机 上 绕 过 文 件 访 问 权 限 (由 于 代 理 的 UNIX 域 socket), 他 们 可 以 通 过 转 发 的 连 接 访 问 本 地 代 理 . 攻 击 者 不 可 能 从 代 理 获 得 密 钥 内 容 , 但 是 他 们 能 够 操 作 这 些 密 钥 , 利 用 加 载 到 代 理 上 的 身 份 信 息 通 过 认 证 .

-b bind_address 在 拥 有 多 个 接 口 或 地 址 别 名 的 机 器 上 , 指 定 收 发 接 口 .

-c blowfish|3des|des 选 择 加 密 会 话 的 密 码 术 . 3des 是 默 认 算 法 . 3des (triple-des) 用 三 支 不 同 的 密 钥 做 加 密 -解 密 -加 密 三 次 运 算 , 被 认 为 比 较 可 靠 . blowfish 是 一 种 快 速 的 分 组 加 密 术 (block cipher), 非 常 安 全 , 而 且 速 度 比 3des 快 的 多 . des 仅 支 持 ssh 客 户 端 , 目 的 是 能 够 和 老 式 的 不 支 持 3des 的 协 议 第 一 版 互 操 作 . 由 于 其 密 码 算 法 上 的 弱 点 , 强 烈 建 议 避 免 使 用 .

-c cipher_spec 另 外 , 对 于 协 议 第 二 版 , 这 里 可 以 指 定 一 组 用 逗 号 隔 开 , 按 优 先 顺 序 排 列 的 密 码 术 . 详 见 Ciphers.

-e ch|^ch|none 设 置 pty 会 话 的 escape 字 符 (默 认 字 符 : ’~’). escape 字 符 只 在 行 首 有 效 , escape 字 符 后 面 跟 一 个 点 (’.’) 表 示 结 束 连 接 , 跟 一 个 control-Z 表 示 挂 起 连 接 (suspend), 跟 escape 字 符 自 己 表 示 输 出 这 个 字 符 . 把 这 个 字 符 设 为 ’’none’’ 则 禁 止 escape 功 能 , 使 会 话 完 全 透 明 .

-f 要 求 ssh 在 执 行 命 令 前 退 至 后 台 . 它 用 于 当 ssh 准 备 询 问 口 令 或 密 语 , 但 是 用 户 希 望 它 在 后 台 进 行 . 该 选 项 隐 含 了 -n 选 项 . 在 远 端 机 器 上 启 动 X11 程 序 的 推 荐 手 法 就 是 类 似 于 ssh -f host xterm 的 命 令 .

-g 允 许 远 端 主 机 连 接 本 地 转 发 的 端 口 .

-i identity_file 指 定 一 个 RSA 或 DSA 认 证 所 需 的 身 份 (私 钥 )文 件 . 默 认 文 件 是 协 议 第 一 版 的 $HOME/.ssh/identity 以 及 协 议 第 二 版 的 $HOME/.ssh/id_rsa$HOME/.ssh/id_dsa 文 件 . 也 可 以 在 配 置 文 件 中 对 每 个 主 机 单 独 指 定 身 份 文 件 . 可 以 同 时 使 用 多 个 -i 选 项 (也 可 以 在 配 置 文 件 中 指 定 多 个 身 份 文 件 ).

-I smartcard_device 指 定 智 能 卡 (smartcard)设 备 . 参 数 是 设 备 文 件 , ssh 能 够 用 它 和 智 能 卡 通 信 , 智 能 卡 里 面 存 储 了 用 户 的 RSA 私 钥 .

-k 禁 止 转 发 Kerberos 门 票 和 AFS 令 牌 . 可 以 在 配 置 文 件 中 对 每 个 主 机 单 独 设 定 这 个 参 数 .

-l login_name 指 定 登 录 远 程 主 机 的 用 户 . 可 以 在 配 置 文 件 中 对 每 个 主 机 单 独 设 定 这 个 参 数 .

-m mac_spec 另 外 , 对 于 协 议 第 二 版 , 这 里 可 以 指 定 一 组 用 逗 号 隔 开 , 按 优 先 顺 序 排 列 的 MAC(消 息 验 证 码 )算 法 (message authentication code). 详 情 以 MACs 为 关 键 字 查 询 .

-n 把 stdin 重 定 向 到 /dev/null (实 际 上 防 止 从 stdin 读 取 数 据 ). ssh 在 后 台 运 行 时 一 定 会 用 到 这 个 选 项 . 它 的 常 用 技 巧 是 远 程 运 行 X11 程 序 . 例 如 , ssh -n shadows.cs.hut.fi emacs & 将 会 在 shadows.cs.hut.fi 上 启 动 emacs, 同 时 自 动 在 加 密 通 道 中 转 发 X11 连 接 . ssh 在 后 台 运 行 . (但 是 如 果 ssh 要 求 口 令 或 密 语 , 这 种 方 式 就 无 法 工 作 ; 参 见 -f 选 项 .)

-N 不 执 行 远 程 命 令 . 用 于 转 发 端 口 . (仅 限 协 议 第 二 版 )

-o option 可 以 在 这 里 给 出 某 些 选 项 , 格 式 和 配 置 文 件 中 的 格 式 一 样 . 它 用 来 设 置 那 些 没 有 命 令 行 开 关 的 选 项 .

-p port 指 定 远 程 主 机 的 端 口 . 可 以 在 配 置 文 件 中 对 每 个 主 机 单 独 设 定 这 个 参 数 .

-q 安 静 模 式 . 消 除 所 有 的 警 告 和 诊 断 信 息 .

-s 请 求 远 程 系 统 激 活 一 个 子 系 统 . 子 系 统 是 SSH2 协 议 的 一 个 特 性 , 能 够 协 助 其 他 应 用 程 序 (如 sftp)把 SSH用 做 安 全 通 路 . 子 系 统 通 过 远 程 命 令 指 定 .

-t 强 制 分 配 伪 终 端 . 可 以 在 远 程 机 器 上 执 行 任 何 全 屏 幕 (screen-based)程 序 , 所 以 非 常 有 用 , 例 如 菜 单 服 务 . 并 联 的 -t 选 项 强 制 分 配 终 端 , 即 使 ssh 没 有 本 地 终 端 .

-T 禁 止 分 配 伪 终 端 .

-v 冗 详 模 式 . 使 ssh 打 印 关 于 运 行 情 况 的 调 试 信 息 . 在 调 试 连 接 , 认 证 和 配 置 问 题 时 非 常 有 用 . 并 联 的 -v 选 项 能 够 增 加 冗 详 程 度 . 最 多 为 三 个 .

-x 禁 止 X11 转 发 .

-X 允 许 X11 转 发 . 可 以 在 配 置 文 件 中 对 每 个 主 机 单 独 设 定 这 个 参 数 . 应 该 谨 慎 使 用 X11 转 发 . 如 果 用 户 在 远 程 主 机 上 能 够 绕 过 文 件 访 问 权 限 (根 据 用 户 的 X授 权 数 据 库 ), 他 就 可 以 通 过 转 发 的 连 接 访 问 本 地 X11 显 示 器 . 攻 击 者 可 以 据 此 采 取 行 动 , 如 监 视 键 盘 输 入 等 .

-C 要 求 进 行 数 据 压 缩 (包 括 stdin, stdout, stderr 以 及 转 发 X11 和 TCP/IP 连 接 的 数 据 ). 压 缩 算 法 和 gzip(1) 的 一 样 , 协 议 第 一 版 中 , 压 缩 级 别 ’’level’’ 用 CompressionLevel 选 项 控 制 . 压 缩 技 术 在 modem 线 路 或 其 他 慢 速 连 接 上 很 有 用 , 但 是 在 高 速 网 络 上 反 而 可 能 降 低 速 度 . 可 以 在 配 置 文 件 中 对 每 个 主 机 单 独 设 定 这 个 参 数 . 另 见 Compression 选 项 .

-F configfile 指 定 一 个 用 户 级 配 置 文 件 . 如 果 在 命 令 行 上 指 定 了 配 置 文 件 , 系 统 级 配 置 文 件 (/etc/ssh/ssh_config) 将 被 忽 略 . 默 认 的 用 户 级 配 置 文 件 是 $HOME/.ssh/config.

-L port:host:hostport 将 本 地 机 (客 户 机 )的 某 个 端 口 转 发 到 远 端 指 定 机 器 的 指 定 端 口 . 工 作 原 理 是 这 样 的 , 本 地 机 器 上 分 配 了 一 个 socket 侦 听 port 端 口 , 一 旦 这 个 端 口 上 有 了 连 接 , 该 连 接 就 经 过 安 全 通 道 转 发 出 去 , 同 时 远 程 主 机 和 hosthostport 端 口 建 立 连 接 . 可 以 在 配 置 文 件 中 指 定 端 口 的 转 发 . 只 有 root 才 能 转 发 特 权 端 口 . IPv6 地 址 用 另 一 种 格 式 说 明 : port/host/hostport

-R port:host:hostport 将 远 程 主 机 (服 务 器 )的 某 个 端 口 转 发 到 本 地 端 指 定 机 器 的 指 定 端 口 . 工 作 原 理 是 这 样 的 , 远 程 主 机 上 分 配 了 一 个 socket 侦 听 port 端 口 , 一 旦 这 个 端 口 上 有 了 连 接 , 该 连 接 就 经 过 安 全 通 道 转 向 出 去 , 同 时 本 地 主 机 和 hosthostport 端 口 建 立 连 接 . 可 以 在 配 置 文 件 中 指 定 端 口 的 转 发 . 只 有 用 root 登 录 远 程 主 机 才 能 转 发 特 权 端 口 . IPv6 地 址 用 另 一 种 格 式 说 明 : port/host/hostport

-D port 指 定 一 个 本 地 机 器 ’’动 态 的 ’’ 应 用 程 序 端 口 转 发 . 工 作 原 理 是 这 样 的 , 本 地 机 器 上 分 配 了 一 个 socket 侦 听 port 端 口 , 一 旦 这 个 端 口 上 有 了 连 接 , 该 连 接 就 经 过 安 全 通 道 转 发 出 去 , 根 据 应 用 程 序 的 协 议 可 以 判 断 出 远 程 主 机 将 和 哪 里 连 接 . 目 前 支 持 SOCKS4 协 议 , ssh 将 充 当 SOCKS4 服 务 器 . 只 有 root 才 能 转 发 特 权 端 口 . 可 以 在 配 置 文 件 中 指 定 动 态 端 口 的 转 发 .

-1 强 制 ssh 只 使 用 协 议 第 一 版 .

-2 强 制 ssh 只 使 用 协 议 第 二 版 .

-4 强 制 ssh 只 使 用 IPv4 地 址 .

-6 强 制 ssh 只 使 用 IPv6 地 址 . 配 置 文 件 (CONFIGURATION FILES)

ssh 可 以 从 用 户 级 配 置 文 件 和 系 统 级 配 置 文 件 中 获 取 更 多 的 配 置 数 据 . 配 置 文 件 的 格 式 及 其 内 容 参 见 ssh_config(5). 环 境 变 量 (ENVIRONMENT)
ssh
一 般 将 设 置 下 面 的 环 境 变 量 :

DISPLAY 环 境 变 量 DISPLAY 指 出 X11 服 务 器 的 位 置 . ssh 自 动 设 置 这 个 变 量 , 变 量 指 向 ’’hostname:n’’ 格 式 的 数 据 , 其 中 hostname 指 出 运 行 shell 的 主 机 , 而 n 是 大 于 等 于 1 的 整 数 . ssh 根 据 这 个 数 据 , 用 安 全 通 路 转 发 X11 连 接 . 用 户 一 般 不 需 要 主 动 设 置 DISPLAY 变 量 , 否 则 会 导 致 X11 连 接 不 安 全 (而 且 会 导 致 用 户 手 工 复 制 所 需 的 授 权 cookie).

HOME 设 置 为 用 户 根 目 录 的 路 径 .

LOGNAME 等 于 USER; 用 来 兼 容 使 用 这 个 变 量 的 系 统 .

MAIL 设 置 为 用 户 邮 箱 的 路 径 .

PATH 设 置 为 默 认 的 PATH, 如 同 编 译 ssh 时 要 求 的 一 样 .

SSH_ASKPASS 如 果 ssh 需 要 一 个 密 语 (passphrase), 只 要 它 是 终 端 上 启 动 的 , 它 会 从 当 前 终 端 上 读 取 . 如 果 ssh 没 有 联 接 终 端 , 但 是 设 置 了 DISPLAY 和 SSH_ASKPASS 变 量 , ssh 就 运 行 SSH_ASKPASS 指 定 的 程 序 , 打 开 一 个 X11 窗 口 读 取 密 语 . 当 从 .Xsession 或 类 似 的 script 中 调 用 ssh 时 , 这 个 功 能 特 别 有 用 . (注 意 , 某 些 机 器 上 可 能 需 要 将 输 入 重 定 向 为 /dev/null 才 能 工 作 .)

SSH_AUTH_SOCK 标 识 某 个 UNIX 域 socket 的 路 径 , 用 于 和 代 理 通 信 .

SSH_CONNECTION 标 识 连 接 的 客 户 端 和 服 务 器 端 . 变 量 包 含 四 个 用 空 格 隔 开 的 字 段 : 客 户 端 IP地 址 , 客 户 端 端 口 号 , 服 务 器 IP地 址 , 服 务 器 端 口 号 .

SSH_ORIGINAL_COMMAND 如 果 强 制 执 行 了 某 条 命 令 , 该 变 量 就 保 存 了 最 初 的 命 令 行 . 可 以 用 它 获 取 初 始 参 数 .

SSH_TTY 设 置 为 关 联 当 前 shell 或 命 令 的 终 端 名 字 (设 备 的 路 径 ). 如 果 会 话 没 有 终 端 , 就 不 设 置 这 个 变 量 .

TZ 如 果 启 动 后 台 进 程 (daemon)时 设 置 了 时 区 , 就 设 置 这 个 时 区 变 量 , 指 出 现 在 的 时 区 (就 是 说 , 后 台 进 程 会 把 这 个 变 量 传 给 新 建 连 接 ).

USER 设 置 为 登 录 的 用 户 名 . 另 外 , 如 果 允 许 用 户 改 变 他 们 的 环 境 数 据 , 而 且 有 $HOME/.ssh/environment 这 个 文 件 , ssh 将 读 取 其 中 数 据 , 把 ’’VARNAME=value’’ 这 种 格 式 的 数 据 行 添 加 进 环 境 数 据 区 . 另 见 sshd_config(5)PermitUserEnvironment 选 项 . 文 件 (FILES)
$HOME/.ssh/known_hosts
主 机 密 钥 的 记 录 , 记 录 有 用 户 登 录 上 来 , 但 是 没 有 列 在 /etc/ssh/ssh_known_hosts 中 的 主 机 . 参 见 sshd(8).

$HOME/.ssh/identity, $HOME/.ssh/id_dsa, $HOME/.ssh/id_rsa 包 含 了 用 户 的 身 份 信 息 . 它 们 分 别 是 协 议 第 一 版 的 RSA, 协 议 第 二 版 的 DSA, 协 议 第 二 版 的 RSA. 这 些 文 件 存 有 敏 感 信 息 , 只 应 由 该 用 户 读 取 , 不 允 许 其 他 用 户 访 问 (读 /写 /执 行 ). 注 意 , 如 果 一 个 私 钥 文 件 能 够 让 其 他 用 户 访 问 , ssh 将 忽 略 这 个 文 件 . 在 生 成 密 钥 的 时 候 可 以 指 定 一 个 密 语 (passphrase), 用 这 个 密 语 和 3DES 加 密 文 件 的 敏 感 部 分 .

$HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_rsa.pub 包 含 认 证 用 的 公 钥 (以 文 本 格 式 保 存 的 身 份 文 件 的 公 开 部 分 ). 如 果 用 户 希 望 用 协 议 第 一 版 的 RSA 认 证 登 录 这 些 机 器 , $HOME/.ssh/identity.pub 的 内 容 应 该 添 加 到 所 有 机 器 的 $HOME/.ssh/authorized_keys 中 . 如 果 用 户 希 望 用 协 议 第 二 版 的 DSA/RSA 认 证 登 录 这 些 机 器 , $HOME/.ssh/id_dsa.pub$HOME/.ssh/id_rsa.pub 的 内 容 应 该 添 加 到 所 有 机 器 的 $HOME/.ssh/authorized_keys 中 . 这 些 文 件 没 有 敏 感 数 据 , 可 以 (但 不 是 必 须 )让 任 何 人 读 取 . ssh 绝 不 会 自 动 访 问 这 些 文 件 , 它 们 也 不 是 不 可 或 缺 ; 只 是 为 了 用 户 方 便 才 提 供 这 些 文 件 .

$HOME/.ssh/config 用 户 级 配 置 文 件 . ssh_config(5) 描 述 了 文 件 格 式 及 其 配 置 选 项 .

$HOME/.ssh/authorized_keys 存 放 RSA/DSA 公 钥 , 用 户 通 过 它 登 录 机 器 . sshd(8) 手 册 页 描 述 了 这 个 文 件 的 格 式 . 最 简 单 的 文 件 格 式 和 .pub 身 份 文 件 一 样 . 文 件 内 容 并 非 高 度 敏 感 , 但 是 仍 然 建 议 仅 让 此 文 件 的 用 户 读 写 , 而 拒 绝 其 他 用 户 的 访 问 .

/etc/ssh/ssh_known_hosts 已 知 的 主 机 密 钥 的 系 统 级 列 表 . 系 统 管 理 员 应 该 准 备 好 这 个 文 件 , 把 所 需 主 机 的 公 钥 保 存 在 文 件 里 面 . 这 个 文 件 应 该 能 够 全 局 读 取 . 文 件 中 一 行 一 支 公 钥 , 格 式 是 (字 段 用 空 格 隔 开 ): 系 统 名 字 , 公 钥 , 可 选 的 注 释 域 . 如 果 同 一 个 机 器 使 用 了 多 个 名 字 , 所 有 名 字 都 应 该 (用 逗 号 隔 开 )列 出 来 . 文 件 格 式 在 sshd(8) 手 册 页 中 有 描 述 . 登 录 的 时 候 , sshd(8) 用 规 范 的 系 统 名 字 (名 字 服 务 器 返 回 的 )确 认 客 户 机 ; 其 他 名 字 也 需 要 , 因 为 校 验 密 钥 前 ssh 不 会 把 用 户 提 供 的 名 字 转 换 为 规 范 名 字 , 防 止 能 够 操 作 名 字 服 务 器 的 人 欺 骗 主 机 认 证 .

/etc/ssh/ssh_config 系 统 级 配 置 文 件 . ssh_config(5) 描 述 了 文 件 格 式 和 配 置 选 项 .

/etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key 这 三 个 文 件 包 含 了 主 机 密 钥 的 私 有 部 分 , 它 们 用 于 RhostsRSAAuthenticationHostbasedAuthentication. 如 果 使 用 了 协 议 第 一 版 的 RhostsRSAAuthentication 方 法 , ssh 必 须 是 setuid root, 因 为 只 有 root 才 能 读 取 主 机 密 钥 . 而 对 于 协 议 第 二 版 的 HostbasedAuthentication 方 法 , ssh 使 用 ssh-keysign(8) 访 问 主 机 密 钥 . 这 样 消 除 了 验 证 身 份 时 对 ssh setuid root 的 要 求 . 默 认 情 况 下 ssh 不 是 setuid root.

$HOME/.rhosts 该 文 件 用 于 .rhosts 认 证 , 里 面 列 出 允 许 登 录 的 主 机 /用 户 对 . (注 意 rlogin 和 rsh 也 使 用 这 个 文 件 , 导 致 这 个 文 件 的 应 用 变 得 不 安 全 ) 文 件 中 的 每 一 行 包 括 一 个 主 机 名 字 (用 名 字 服 务 器 返 回 的 规 范 名 字 ), 和 主 机 上 的 用 户 名 字 , 用 空 格 隔 开 . 某 些 机 器 上 , 如 果 用 户 根 目 录 位 于 NFS 分 区 , 这 个 文 件 可 能 需 要 全 局 可 读 , 因 为 sshd(8) 以 root 身 份 读 它 . 此 外 , 该 文 件 必 须 属 于 这 个 用 户 , 其 他 人 不 允 许 持 有 写 权 限 . 对 大 多 数 机 器 推 荐 的 访 问 权 限 是 , 它 的 用 户 可 以 读 写 , 而 不 让 其 他 人 访 问 . 注 意 , 默 认 情 况 下 会 安 装 sshd(8) , 因 此 在 允 许 . rhosts 认 证 前 , sshd (8) 要 求 成 功 进 行 了 RSA 主 机 验 证 . 如 果 没 有 /etc/ssh/ssh_known_hosts 文 件 存 放 客 户 的 主 机 密 钥 , 密 钥 可 以 存 放 在 $HOME/.ssh/known_hosts 中 . 最 简 单 的 做 法 是 用 ssh 从 服 务 器 回 连 客 户 机 ; 这 样 会 自 动 把 主 机 密 钥 添 加 到 $HOME/.ssh/known_hosts.

$HOME/.shosts 这 个 文 件 的 用 法 和 .rhosts 完 全 一 样 . 它 的 目 的 是 允 许 ssh 做 rhosts 认 证 的 同 时 防 止 rloginrsh(1) 登 录 .

/etc/hosts.equiv

.rhosts 认 证 使 用 这 个 文 件 . 它 包 含 规 范 的 主 机 名 字 , 一 行 一 个 ( sshd(8) 手 册 页 描 述 了 完 整 的 格 式 ). 如 果 文 件 中 发 现 了 客 户 机 的 名 字 , 而 且 客 户 机 和 服 务 器 的 用 户 名 相 同 , 则 自 动 允 许 登 录 . 另 外 , 一 般 情 况 下 要 求 RSA 主 机 认 证 成 功 . 这 个 文 件 只 应 该 让 root 可 写 .

/etc/ssh/shosts.equiv 这 个 文 件 的 用 法 和 /etc/hosts.equiv 完 全 一 样 . 用 于 允 许 ssh 登 录 , 但 不 允 许 rsh/rlogin 的 时 候 .

/etc/ssh/sshrc 当 用 户 登 录 后 , 运 行 shell (或 命 令 )前 , ssh 执 行 这 个 文 件 中 的 命 令 . 详 见 sshd(8) 手 册 页 .

$HOME/.ssh/rc 当 用 户 登 录 后 , 运 行 shell (或 命 令 )前 , ssh 执 行 这 个 文 件 中 的 命 令 . 详 见 sshd(8) 手 册 页 .

$HOME/.ssh/environment 含 有 关 于 环 境 变 量 的 附 加 定 义 , 另 见 前 面 的 ENVIRONMENT 节 . 诊 断 (DIAGNOSTICS)

ssh 结 束 时 的 状 态 码 就 是 远 端 命 令 结 束 时 的 返 回 码 , 如 果 发 生 了 错 误 就 返 回 255. 作 者 (AUTHORS)
OpenSSH 源 自 最 初 Tatu Ylonen 发 表 的 自 由 ssh 1.2.12. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt 和 Dug Song 消 除 了 许 多 BUGS, 增 加 新 的 特 征 , 从 而 创 建 了 OpenSSH. Markus Friedl 贡 献 了 对 SSH 协 议 1.5版 和 2.0版 的 支 持 . 另 见 (SEE ALSO)
rsh(1), scp(1), sftp(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), telnet(1), ssh_config(5), ssh-keysign(8), sshd(8)

T. Ylonen,
T. Kivinen,
M. Saarinen,
T. Rinne, and
S. Lehtinen,
SSH Protocol Architecture
,
draft-ietf-secsh-architecture-12.txt,
January 2002,
work in progress material .

[中 文 版 维 护 人 ] 徐 明 <xuming [AT] users.net>

[中 文 版 最 新 更 新 ]

2004/06/11 第 一 版 《 中 国 Linux论 坛 man手 册 页 翻 译 计 划 》
http://cmpp.linuxforum.net 本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh

BSD September 25, 1999 BSD