使用RedHat9的telnet:SSH 指南(轉)

BSDLite發表於2007-08-12
使用RedHat9的telnet:SSH 指南(轉)[@more@]  OpenSSH 是 SSH (Secure SHell) 協議的免費開源實現。它用安全、加密的網路連線工具代替了 telnet、ftp、 rlogin、rsh 和 rcp 工具。OpenSSH 支援 SSH 協議的版本 1.3、1.5、和 2。自從 OpenSSH 的版本 2.9 以來,預設的協議是版本 2,該協議預設使用 RSA 鑰匙。

  1. 為什麼使用 SSH?

  使用 OpenSSH 工具將會增進你的系統安全性。 所有使用 OpenSSH 工具的通訊,包括口令,都會被加密。 telnet 和 ftp 使用純文字口令,並被明文傳送。這些資訊可能會被擷取,口令可能會被檢索,然後未經授權的人員可能會使用擷取的口令登入進你的系統而對你的系統造成危害。你應該儘可能地使用 OpenSSH 的工具集合來避免這些安全問題。

  另一個使用 OpenSSH 的原因是,它自動把 DISPLAY 變數轉發給客戶機器。換一句話說,如果你在本地機器上執行 X 視窗系統,並且使用 ssh 命令登入到了遠端機器上,當你在遠端機器上執行一個需要 X 的程式時,它會顯示在你的本地機器上。如果你偏愛圖形化系統管理工具,卻不能夠總是親身訪問該伺服器,這就會為你的工作大開方便之門。

  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 命令。如果你想讓守護程式在引導時自動啟動,請參閱相關資料來獲取關於如何管理服務的資訊。

  如果你重新安裝了 Red Hat Linux 系統,任何在它被重灌前使用 OpenSSH 工具連線到這個系統上的客戶在它被重灌後將會看到下列訊息:

  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  IT 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* 檔案,然後在系統重灌後恢復它。該過程會保留系統的身份。當客戶機在該系統重灌後試圖連線它,它們就不會看到以上的警告資訊。(還有一種解決方法見:

  3. 配置 OpenSSH 客戶

  要從客戶機連線到 OpenSSH 伺服器上,你必須在客戶機器上裝有 openssh-clients 和 openssh 軟體包。

  3.1. 使用 ssh 命令

  ssh 命令是 rlogin、rsh 和 telnet 命令的安全替換。它允許你在遠端機器上登入並在其上執行命令。

  使用 ssh 來登入到遠端機器和使用 telnet 相似。要登入到一個叫做 penguin.example.net 的遠端機器,在 shell 提示下鍵入下面的命令:

  ssh penguin.example.net

  第一次使用 ssh 在遠端機器上登入時,你會看到和下面相仿的訊息:

  The authenticity of host 'penguin.example.net' can't be established.

  DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.

  Are you sure you want to continue connecting (yes/no)?

  鍵入 yes 來繼續。這會把該伺服器新增到你的已知主機的列表中,如下面的訊息所示:

  Warning: Permanently added 'penguin.example.net' (RSA) to the list of known hosts.

  下一步,你會看到向你詢問遠端主機口令的提示。在輸入口令後,你就會在遠端主機的 shell 提示下了。如果你沒有指定使用者名稱,你在本地客戶機器上登入用的使用者名稱就會被傳遞給遠端機器。如果你想指定不同的使用者名稱,使用下面的命令:

  ssh

  你還可以使用 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 提示下。

  3.2. 使用 scp 命令

  scp 命令可以用來透過安全、加密的連線在機器間傳輸檔案。它與 rcp 相似。

  把本地檔案傳輸給遠端系統的一般語法是:

  scp localfile username@tohostname:/newfilename

  localfile 指定原始檔,username@tohostname:/newfilename 指定目標檔案。

  要把本地檔案 shadowman 傳送到你在 penguin.example.net 上的賬號內,在 shell 提示下鍵入(把 username 替換成你的使用者名稱):

  scp shadowman :/home/username

  這會把本地檔案 shadowman 傳輸給 penguin.example.net 上的 /home/username/shadowman 檔案。

  把遠端檔案傳輸給本地系統的一般語法是:

  scp username@tohostname:/remotefile /newlocalfile

  remotefile 指定原始檔,newlocalfile 指定目標檔案。

  原始檔可以由多個檔案組成。譬如,要把目錄 /downloads 的內容傳輸到遠端機器 penguin.example.net 上現存的 uploads 目錄,在 shell 提示下鍵入下列命令:

  scp /downloads/* :/uploads/

  3.3. 使用 sftp 命令

  sftp 工具可以用來開啟一次安全互動的 FTP 會話。它與 ftp 相似, 只不過,它使用安全、加密的連線。它的一般語法是:sftp 。一旦透過 驗證,你可以使用一組和使用 FTP 相似的命令。請參閱 sftp 的說明書頁(man)來獲取這些 命令的列表。要閱讀說明書頁,在 shell 提示下執行 man sftp 命令。sftp 工具只在 OpenSSH 版本 2.5.0p1 以上才有。

  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 目錄。重灌後,把該目錄複製回主目錄。該程式可為系統上的所有使用者進行,包括根使用者。

  3.4.1. 為版本 2 生成 RSA 鑰匙對

  使用下列步驟來為 SSH 協議的版本 2 生成 RSA 鑰匙對。從 OpenSSH 2.9 開始,它已成為預設設定。

  1. 要生成 RSA 鑰匙對與協議的版本 2 合作,在 shell 提示下鍵入下列命令:

  ssh-keygen -t rsa

  接受 ~/.ssh/id_rsa 的預設位置。輸入一個與你的帳號口令不同的口令句,再輸入一次來確認。

  公鑰被寫入 ~/.ssh/id_rsa.pub。金鑰被寫入 ~/.ssh/id_rsa。決不能把金鑰出示給任何人。

  2. 使用 chmod 755 ~/.ssh 命令改變你的 .ssh 目錄的許可許可權。

  3. 把 ~/.ssh/id_rsa.pub 的內容複製到你想連線的機器上的 ~/.ssh/authorized_keys 檔案中。如果 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_rsa.pub 檔案複製到那個機器上的 ~/.ssh/authorized_keys 檔案中。

  4. 如果你執行的是 GNOME,跳到第 3.4.4 節。如果你沒在執行 X 視窗系統,跳到第 3.4.5 節。

  3.4.2. 為版本 2 生成 DSA 鑰匙對

  使用下面的步驟來為 SSH 協議的版本 2 生成 DSA 鑰匙對。

  1. 要生成用於協議的版本 2 的 DSA 鑰匙對,在 shell 提示下鍵入下面的命令:

  ssh-keygen -t dsa

  接受 ~/.ssh/id_dsa 的預設位置。輸入一個與你的帳號口令不同的口令句,再輸入一次來確認。

  竅門

  口令句是用來驗證使用者的一串詞彙和字元。 口令句和一般口令的不同之處在於:在口令句中你可以使用空格或製表符。口令句通常比一般口令長,因為它們通常使用短語而不僅僅用一個詞。

  公鑰被寫入 ~/.ssh/id_dsa.pub。金鑰被寫入 ~/.ssh/id_dsa。決不能把金鑰出示給任何人,這一點很重要。

  2. 使用 chmod 755 ~/.ssh 命令改變你的 .ssh 目錄的許可許可權。

  3. 把 ~/.ssh/id_dsa.pub 的內容複製到你想連線的機器中的 ~/.ssh/authorized_keys 檔案中。如果檔案 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_dsa.pub 檔案複製到那個機器上的 ~/.ssh/authorized_keys檔案中。

  4. 如果你執行的是 GNOME,跳到第 3.4.4 節。如果你沒在執行 X 視窗系統,跳到 第 3.4.5 節。

  3.4.3. 為版本 1.3 和 1.5 生成 DSA 鑰匙對

  使用下面的步驟來生成用於 SSH 協議版本 1 的 RSA 鑰匙對。如果你只在使用 DSA 的系統間連線,則不需要 RSA 版本 1.3 或 RSA 版本 1.5 鑰匙對。

  1. 要生成 RSA (版本 1.3 和 1.5 協議)鑰匙對,在 shell 提示下鍵入下列命令:

  ssh-keygen -t rsa1

  接受預設的位置 (~/.ssh/identity)。輸入和你的帳號口令不同的口令句。再輸入一次來確認。

  公鑰被寫入 ~/.ssh/identity.pub。金鑰被寫入 ~/.ssh/identity。不要把你的金鑰出示給任何人。

  2. 使用 chmod 755 ~/.ssh 和 chmod 644 ~/.ssh/identity.pub 命令改變你的 .ssh 目錄和金鑰的許可許可權。

  3. 把 ~/.ssh/identity.pub 的內容複製到你想連線的機器中的 ~/.ssh/authorized_keys 檔案中。如果檔案 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/identity.pub 檔案複製到遠端機器上的 ~/.ssh/authorized_keys 檔案中。

  4. 如果你執行的是 GNOME,跳到第 3.4.4 節。如果你沒在執行 GNOME, 跳到第 3.4.5 節。

  3.4.4. 在 GNOME 中配置 ssh-agent

  ssh-agent 工具可以用來儲存你的口令句,因此你不必在每次引發 ssh 或 scp 連線時都輸入口令。如果你在使用 GNOME,openssh-askpass-gnome 工具可以用來在你登入到 GNOME 時提示你輸入口令句,並把它一直保留到你從 GNOME 中登出之時。你不必為本次 GNOME 會話中任何 ssh 或 scp 連線輸入口令或口令句。如果你不打算使用 GNOME,請參閱第 3.4.5 節。

  要在 GNOME 會話中儲存口令句,遵循下列步驟:

  1. 你需要安裝 openssh-askpass-gnome 軟體包;你可以使用 rpm -q openssh-askpass-gnome 命令來判定該軟體包是否已被安裝。如果它沒有被安裝,從你的 Red Hat Linux 光碟集合、Red Hat FTP 映象站點、或使用 Red Hat 網路 來安裝它。

  2. 點選「主選單」(在皮膚上)=> 「首選項」 => 「更多首選項」 => 「會話」。然後點選「啟動程式」標籤。點選「增加」,在「啟動命令」文字欄位內輸入 /usr/bin/ssh-add。把它的優先順序設為比任何現存命令都高的數字以確保它最後才執行。ssh-add 的優先順序數字最好是 70 或更高。優先順序數字越高,優先順序越低。如果你列出了其它程式,該程式的優先順序應該最低。點選「關閉」來退出該程式。

  3. 登出後再登入進 GNOME;換一句話說,重新啟動 X 伺服器。在 GNOME 啟動後,一個提示你輸入口令句的對話方塊就會出現。輸入要求的口令句。如果你把 DSA 和 RSA 兩者都配置了,你會被提示兩者都輸入。從現在起,你就不會被 ssh、 scp 或 sftp 提示輸入口令了。

  3.4.5. 配置 ssh-agent

  ssh-agent 可以用來儲存你的口令句,因此你在每次使用 ssh 或 scp 連線時就不必總是輸入它。如果你不在執行 X 視窗系統,則在 shell 提示中遵循這些步驟。如果你在執行 GNOME,但是不想配置它來在你登入時提示你輸入口令(參閱第 3.4.4 節),這個過程可以在類似 xterm 的終端視窗中進行。如果你在執行 X 卻不是 GNOME,這個過程可以在終端中進行。可是,你的口令只能在該終端視窗中被記住,它不是全域性設定。

  1. 在 shell 提示下,鍵入下面的命令:

  exec /usr/bin/ssh-agent $SHELL

  2. 然後,鍵入下面的命令:

  ssh-add

  接著,輸入你的口令。如果你配置了不止一個鑰匙對,你會被提示輸入每個口令。

  3. 當你登出後,口令句就會被忘記。你必須在每次登入到虛擬控制檯或開啟終端視窗時都執行這兩條命令。

  4. 其它資料

  OpenSSH 和 OpenSSL 工程處於不斷地開發中,因此關於它們的最新資訊通常位於它們的官方網站中。OpenSSH 和 OpenSSL 工具的說明書(man)頁也是個獲取詳細資訊的好地方。

  4.1. 安裝了的文件

  * ssh、scp、sftp、sshd 和 ssh-keygen 的說明書(man)頁 — 關於它們的說明書頁包括如何使用這些命令的資訊,以及所有能與它們一起使用的引數。

  4.2. 有用的網站

  * — OpenSSH FAQ 網頁、錯誤報告、郵件列表、工程宗旨、以及關於安全功能的更技術性的解釋。

  * — OpenSSL FAQ 網頁、郵件列表、以及對於工程宗旨的描述。

  * — 用於其它平臺的 SSH 客戶軟體。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-950368/,如需轉載,請註明出處,否則將追究法律責任。

相關文章