OpenSSH 是 SSH ( S ecure S H ell) 協議的免費開源實現。它用安全、加密的網絡連接工具代替了 telnet 、 FTP 、 rlogin 、 rsh 和 rcp 工具。OpenSSH 支持 SSH 協議的版本 1.3、1.5、和 2。自從 OpenSSH 的版本 2.9 以來,默認的協議是版本 2,該協議默認使用 RSA 鑰匙。
15.1. 為什麼使用 SSH?使用 OpenSSH 工具將會增進你的系統安全性。 所有使用 OpenSSH 工具的通訊,包括口令,都會被加密。 telnet 和 ftp 使用純文本口令,並被明文發送。這些信息可能會被截取,口令可能會被檢索,然後未經授權的人員可能會使用截取的口令登錄進你的系統而對你的系統造成危害。你應該盡可能地使用 OpenSSH 的工具集合來避免這些安全問題。
另一個使用 OpenSSH 的原因是,它自動把 DISPLAY 變量轉發給客戶機器。換一句話說,如果你在本地機器上運行 X 窗口系統,並且使用 ssh 命令登錄到了遠程機器上,當你在遠程機器上執行一個需要 X 的程序時,它會顯示在你的本地機器上。如果你偏愛圖形化系統管理工具,卻不能夠總是親身訪問該服務器,這就會為你的工作大開方便之門。
15.2. 配置 OpenSSH 服務器要運行 OpenSSH 服務器,你必須首先確定你安裝了正確的 RPM 軟件包。 openssh-server 軟件包是必不可少的,並且它依賴於 openssh 軟件包的安裝與否。
OpenSSH 守護進程使用 /etc/ssh/sshd_config 配置文件。Red Hat Linux 9 安裝的默認配置文件在多數情況下應該足以勝任。如果你想使用沒有被默認的 sshd_config 文件提供的方式來配置守護進程,請閱讀 sshd 的說明書(man)頁來獲取能夠在配置文件中定義的關鍵字列表。
要啟動 OpenSSH 服務,使用 /sbin/service sshd start 命令。要停止 OpenSSH 服務器,使用 /sbin/service sshd stop 命令。如果你想讓守護進程在引導時自動啟動,請參閱 第14章 來獲取關於如何管理服務的信息。
如果你重新安裝了 Red Hat Linux 系統,任何在它被重裝前使用 OpenSSH 工具連接到這個系統上的客戶在它被重裝後將會看到下列消息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 99v IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.重裝後的系統會為自己創建一組新的身份標識鑰匙;因此客戶會看到 RSA 主機鑰匙改變的警告。如果你想保存系統原有的主機鑰匙,備份 /etc/ssh/ssh_host*key* 文件,然後在系統重裝後恢復它。該過程會保留系統的身份。當客戶機在該系統重裝後試圖連接它,它們就不會看到以上的警告信息。
15.3. 配置 OpenSSH 客戶要從客戶機連接到 OpenSSH 服務器上,你必須在客戶機器上裝有 openssh-clients 和 openssh 軟件包。
15.3.1. 使用 ssh 命令ssh 命令是 rlogin 、 rsh 和 telnet 命令的安全替換。它允許你在遠程機器上登錄並在其上執行命令。
使用 ssh 來登錄到遠程機器和使用 telnet 相似。要登錄到一個叫做 penguin.example.net 的遠程機器,在 shell 提示下鍵入下面的命令:
ssh penguin.example.net
第一次使用 ssh 在遠程機器上登錄時,你會看到和下面相仿的消息:
鍵入 yes 來繼續。這會把該服務器添加到你的已知主機的列表中,如下面的消息所示:
Warning: Permanently added 'penguin.example.net' (RSA) to the list of known hosts.下一步,你會看到向你詢問遠程主機口令的提示。在輸入口令後,你就會在遠程主機的 shell 提示下了。如果你沒有指定用戶名,你在本地客戶機器上登錄用的用戶名就會被傳遞給遠程機器。如果你想指定不同的用戶名,使用下面的命令:
ssh username @penguin.example.net你還可以使用 ssh -l username penguin.example.net 。
ssh 命令可以用來在遠程機器上不經 shell 提示登錄而執行命令。它的語法格式是: ssh hostname command 。譬如,如果你想在遠程主機 penguin.example.net 上執行 ls /usr/share/doc 命令,在 shell 提示下鍵入下面的命令:
ssh penguin.example.net ls /usr/share/doc在你輸入了正確的口令之後, /usr/share/doc 這個遠程目錄中的內容就會被顯示,然後你就會被返回到你的本地 shell 提示下。
15.3.2. 使用 scp 命令scp 命令可以用來通過安全、加密的連接在機器間傳輸文件。它與 rcp 相似。
把本地文件傳輸給遠程系統的一般語法是:
scp localfile username@tohostname:/newfilenamelocalfile 指定源文件, username@tohostname:/newfilename 指定目標文件。
要把本地文件 shadowman 傳送到你在 penguin.example.net 上的賬號內,在 shell 提示下鍵入(把 username 替換成你的用戶名):
scp shadowman username @penguin.example.net:/home/ username這會把本地文件 shadowman 傳輸給 penguin.example.net 上的 /home/ username /shadowman 文件。
把遠程文件傳輸給本地系統的一般語法是:
scp username@tohostname:/remotefile /newlocalfileremotefile 指定源文件, newlocalfile 指定目標文件。
源文件可以由多個文件組成。譬如,要把目錄 /downloads 的內容傳輸到遠程機器 penguin.example.net 上現存的 uploads 目錄,在 shell 提示下鍵入下列命令:
scp /downloads/* username @penguin.example.net:/uploads/ 15.3.3. 使用 sftp 命令sftp 工具可以用來打開一次安全互動的 FTP 會話。它與 ftp 相似, 只不過,它使用安全、加密的連接。它的一般語法是: sftp [email protected] 。一旦通過 驗證,你可以使用一組和使用 FTP 相似的命令。請參閱 sftp 的說明書頁(man)來獲取這些 命令的列表。要閱讀說明書頁,在 shell 提示下執行 man sftp 命令。 sftp 工具只在 OpenSSH 版本 2.5.0p1 以上才有。
15.3.4. 生成鑰匙對
如果你不想每次使用 ssh 、 scp 或 sftp 時都要輸入口令來連接遠程機器,你可以生成一對授權鑰匙。
鑰匙必須為每個用戶生成。要為某用戶生成鑰匙,用想連接到遠程機器的用戶身份來遵循下面的步驟。如果你用根用戶的身份完成了下列步驟,就只有根用戶才能使用這對鑰匙。
從 OpenSSH 版本 3.0 開始, ~/.ssh/authorized_keys2 、 ~/.ssh/known_hosts2 和 /etc/ssh_known_hosts2 就會過時。SSH 協議 1 和 2 共享 ~/.ssh/authorized_keys 、 ~/.ssh/known_hosts 和 /etc/ssh/ssh_known_hosts 文件。
Red Hat Linux 9 默認使用 SSH 協議 2 和 RSA 鑰匙。
竅門:如果你重裝了 Red Hat Linux,但是想保留現有的鑰匙對,備份你的主目錄中的 .ssh 目錄。重裝後,把該目錄復制回主目錄。該進程可為系統上的所有用戶進行,包括根用戶。 從 OpenSSH 版本 3.0 開始, ~/.ssh/authorized_keys2 、 ~/.ssh/known_hosts2 和 /etc/ssh_known_hosts2 就會過時。SSH 協議 1 和 2 共享 ~/.ssh/authorized_keys 、 ~/.ssh/known_hosts 和 /etc/ssh/ssh_known_hosts 文件。
Red Hat Linux 9 默認使用 SSH 協議 2 和 RSA 鑰匙。
竅門:如果你重裝了 Red Hat Linux,但是想保留現有的鑰匙對,備份你的主目錄中的 .ssh 目錄。重裝後,把該目錄復制回主目錄。該進程可為系統上的所有用戶進行,包括根用戶。