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

COMMENTS