NAME ssh - OpenSSH SSH client (remote login program) SYNOPSIS ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command]
ssh 用於登錄遠程主機, 並且在遠程主機上執行命令. 它的目的是替換 rlogin 和 rsh, 同時在不安全的網絡之上, 兩個互不信任的主機之間,提供加密的, 安全的通信連接. X11 連接和任意 TCP/IP 端口均可以通過此安全通道轉發(forward).當用戶通過 連接並登錄主機 hostname 后, 根據所用的協議版本, 用戶必須通過下述方法之一向遠程主機證明他/她的身份:
參數
-a
禁止轉發認證代理的連接.
-A
允許轉發認證代理的連接. 可以在配置文件中對每個主機單獨設定這個參數.
代理轉發須謹慎. 某些用戶能夠在遠程主機上繞過文件訪問權限 (由於代理的 UNIX 域 socket), 他們可以通過轉發的連接訪問本地代理. 攻擊者不可能從代理獲得密鑰內容, 但是他們能夠操作這些密鑰, 利用加載到代理上 的身份信息通過認證.
-b bind_address
在擁有多個接口或地址別名的機器上, 指定收發接口.
-f
要求 在執行命令前退至后台. 它用於當 准備詢問口令或密語, 但是用戶希望它在后台進行. 該選項隱含了 -n 選項. 在遠端機器上啟動 X11 程序的推薦手法就是類似於 ssh -f host xterm 的命令.
-g
允許遠端主機連接本地轉發的端口.
-i identity_file
指定一個 RSA 或 DSA 認證所需的身份(私鑰)文件. 默認文件是協議第一版的 $HOME/.ssh/identity 以及協議第二版的 $HOME/.ssh/id_rsa 和 $HOME/.ssh/id_dsa 文件. 也可以在配置文件中對每個主機單獨指定身份文件. 可以同時使用多個 -i 選項 (也可以在配置文件中指定多個身份文件).
-l login_name
指定登錄遠程主機的用戶. 可以在配置文件中對每個主機單獨設定這個參數.
-n
把 stdin 重定向到 /dev/null (實際上防止從 stdin 讀取數據). 在后台運行時一定會用到這個選項. 它的常用技巧是遠程運行 X11 程序. 例如, ssh -n shadows.cs.hut.fi emacs 將會在 shadows.cs.hut.fi 上啟動 emacs, 同時自動在加密通道中轉發 X11 連接. 在后台運行. (但是如果 要求口令或密語, 這種方式就無法工作; 參見 -f 選項.)
-N
不執行遠程命令. 用於轉發端口. (僅限協議第二版)
-o option
可以在這里給出某些選項, 格式和配置文件中的格式一樣. 它用來設置那些沒有命令行開關的選項.
-p port
指定遠程主機的端口. 可以在配置文件中對每個主機單獨設定這個參數.
-q
安靜模式. 消除所有的警告和診斷信息.
-s
請求遠程系統激活一個子系統. 子系統是 SSH2 協議的一個特性, 能夠協助 其他應用程序(如 sftp)把SSH用做安全通路. 子系統通過遠程命令指定.
-t
強制分配偽終端. 可以在遠程機器上執行任何全屏幕(screen-based)程序, 所以非常有用, 例如菜單服務. 並聯的 -t 選項強制分配終端, 即使 沒有本地終端.
-T
禁止分配偽終端.
-v
冗詳模式. 使打印關於運行情況的調試信息. 在調試連接, 認證和配置問題時非常有用. 並聯的 -v 選項能夠增加冗詳程度. 最多為三個.
-F configfile
指定一個用戶級配置文件. 如果在命令行上指定了配置文件, 系統級配置文件 (/etc/ssh/ssh_config ) 將被忽略. 默認的用戶級配置文件是 $HOME/.ssh/config
-L port:host:hostport
將本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接, 該連接就經過安全通道轉發出去, 同時遠程主機和 host 的 hostport 端口建立連接. 可以在配置文件中指定端口的轉發. 只有 root 才能轉發特權端口. IPv6 地址用另一種格式說明: port/host/hostport
-R port:host:hostport
將遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口. 工作原理是這樣的, 遠程主機上分配了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接, 該連接就經過安全通道轉向出去, 同時本地主機和 host 的 hostport 端口建立連接. 可以在配置文件中指定端口的轉發. 只有用 root 登錄遠程主機 才能轉發特權端口. IPv6 地址用另一種格式說明: port/host/hostport
-D port
指定一個本地機器 ``動態的 應用程序端口轉發. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接, 該連接就經過安全通道轉發出去, 根據應用程序的協議可以判斷出遠程主機將和哪里連接. 目前支持 SOCKS4 協議, 將充當 SOCKS4 服務器. 只有 root 才能轉發特權端口. 可以在配置文件中指定動態端口的轉發.
-4
強制 只使用 IPv4 地址.
-6
強制 只使用 IPv6 地址.
常用用法示例:
ssh -p port ipaddr //指定端口
ssh -i id_rsa_pub username@ipaddr //指定認證的私鑰文件和用戶
ssh -i .ssh/id_rsa -L 27018:remote_addr:27018 username@remote_addr //ssh開啟轉發 轉發本地請求27018的請求至remote_addr的27018端口
ssh ipaddr -l usernmae //指定用戶登錄遠程主機
ssh ipaddr ls //連接遠程主機執行ls命令
ssh-copy-id -i id_rsa_pub username@ipaddr //拷貝本地的公鑰至遠程主機username用戶下的authrized_keys文件中
