使用Unix密鑰啟用自動登錄
今天,我們來繼續(xù)學(xué)習(xí)Unix密鑰的知識。當您使用 ssh、sftp 或 scp 登錄到遠程系統(tǒng)后,您仍需要使用密碼才能完成登錄過程。通過創(chuàng)建公鑰或私鑰,將密鑰的公共部分附加到~/.ssh/authorized_keys 文件,并與遠程站點交換了有效Unix密鑰后,您可以省去提供密碼的要求并允許自動登錄。
要創(chuàng)建公鑰或私鑰,您需要使用 ssh-keygen 來指定Unix密鑰加密的類型。在演示中使用了 rsa 密鑰類型,但是其他密鑰類型也有效。要創(chuàng)建密鑰,請參見清單 11。
清單 11. 創(chuàng)建Unix密鑰
- $ ssh-keygen -t rsa
- Generating public/private rsa key pair.
- Enter file in which to save the key (/root/.ssh/id_rsa):
您應(yīng)輸入保存Unix密鑰(公共和私有組件)的文件的位置。使用缺省值(在主目錄中的 .ssh 目錄中)一般就可以了(請參見清單 12)。
清單 12. 提示輸入密碼
- Created directory '/root/.ssh'.
- Enter passphrase (empty for no passphrase):
如果您在此階段輸入了密碼,則會創(chuàng)建安全密鑰文件,但是在每次使用Unix密鑰時,還必須輸入密碼。按 Return 意味著不需要任何密碼(請參見清單13)。
清單 13. 通過按 Return 鍵跳過密碼需求
- Enter same passphrase again:
- Your identification has been saved in /root/.ssh/id_rsa.
- Your public key has been saved in /root/.ssh/id_rsa.pub.
- The key fingerprint is:
- 98:da:8d:48:a8:09:44:b1:b3:62:51:2d:a9:6b:61:ba root@remotehost
現(xiàn)在已創(chuàng)建了公鑰 (id_rsa.pub) 和對應(yīng)的私鑰 (id_rsa)。
要啟用自動登錄,您必須將公鑰的內(nèi)容復(fù)制到遠程主機上 ~/.ssh 目錄中的 authorized_keys 文件中。您可以使用 SSH 自動完成此操作(請參見清單 14)。
清單 14. 啟用自動登錄
$ cat ./.ssh/id_rsa.pub | ssh mc@remotehost 'cat >> .ssh/authorized_keys';
還有,如果在多個主機中經(jīng)常執(zhí)行此操作,則可以使用小腳本或 Shell 函數(shù)來執(zhí)行所有必需步驟,如清單 15 所示。
清單 15. 使用 Shell 腳本啟用自動登錄
- OLDDIR='pwd';
- if [ -z "$1" ]; then
- echo Need user@host info;
- exit;
- fi;
- cd $HOME;
- if [ -e "./.ssh/id_rsa.pub" ]; then
- cat ./.ssh/id_rsa.pub | ssh $1 'cat >> .ssh/authorized_keys';
- else
- ssh-keygen -t rsa;
- cat ./.ssh/id_rsa.pub | ssh $1 'cat >> .ssh/authorized_keys';
- fi;
- cd $OLDDIR
您可以使用 setremotekey 腳本復(fù)制現(xiàn)有Unix密鑰,如果密鑰不存在,可在復(fù)制之前創(chuàng)建一個: $ setremotekey mc@remotehost
現(xiàn)在,每當需要使用公鑰登錄到遠程主機時,您可以結(jié)合使用個人Unix密鑰腳本和遠程主機上該用戶接受的密鑰列表。
OpenSSH 是一個重要工具,它可以保護計算機之間的通信和信息傳輸?shù)陌踩K粌H是常規(guī)工具(如 Telnet、FTP 和 RCP)的安全替代方法,而且還可以充當其他服務(wù)(如 Subversion、X Windows System 和 rsync)的傳輸協(xié)議。
本文向您介紹了啟動和運行 OpenSSH 所需的基本步驟,如何最有效地使用 OpenSSH 提供的主要工具,以及如何使用Unix密鑰交換工具來簡化登錄和連接性問題。
【編輯推薦】