ssh是替代telnet,rsh,rcp等遠程命令的有效工具,為什麼這麼說?
因為ssh是采用加密傳輸,不會造成密碼的明文傳送,增加了安全性;
再有如果采用密鑰的驗證方式,即可以去掉輸入密碼的麻煩,又可以進一步增加系統的安全性。因為密鑰才是唯一的驗證方式,即使你破解了密碼,沒有密鑰文件也是登陸不了系統的。
注意:使用密鑰可以省去輸入密碼的麻煩;但是密鑰千萬不要丟失,如果重裝系統,需要重新生成密鑰。
使用ssh的加密隧道,可以實現一些增值功能,像sftp,scp,rsync,像mail,dns這些都可以使用ssh的隧道。
ssh有兩種協議,ssh1和ssh2。這兩種是不兼容的。openssh同時支持ssh1和ssh2協議,又因為openssh是完全免費的,現在應用特別廣。
相反ssh的開發者,對於ssh1,提供免費;ssh2卻需要商業許可證。
如果安裝openssh,同時支持ssh1和ssh2;如果安裝其他的ssh軟件,需要查看文檔,都支持哪些協議。
openssh的安裝:
下載.tar.gz的安裝包,解壓後,./configure-->make-->make install.
沒有需要特別說明的地方,查看安裝文檔。
缺省安裝後,就可以使用ssh username@hostname登陸,輸入正確密碼。ok。
如果想采用無密碼、密鑰的登陸方式,還需要做些設置。
ssh服務器端的配置文件為sshd_cofig,默認在/etc/ssh/目錄下。
主要設置服務器都支持哪些選項,比如是否允許root登陸,是否使用密鑰等。
ssh客戶端的配置文件為ssh_config,默認在/etc/ssh/目錄下,主要設置客戶端登陸時的一些缺省選項。~/.ssh/config,用戶主目錄下的.ssh目錄的config文件是針對此用戶的ssh客戶端配置。
再有就是可以在命令行,給ssh客戶端指定一些選項。
這三種配置的優先級為命令行參數>>~/.ssh/config>>/etc/ssh/ssh_config。
下面介紹采用無密碼,密鑰的驗證方式思路。
先要在客戶端操作:
密鑰算法有兩種rsa和dsa。
使用ssh-keygen -t dsa生成dsa密鑰。
使用ssh-keygen 或者ssh-keygen -d生成ssh1或ssh2協議的rsa密鑰。
生成的私鑰和公鑰都在~/.ssh/下,文件名叫id_dsa和id_dsa.pub,
rsa對應的就叫id_rsa和id_rsa.pub
需要做的就是把公鑰拷貝到 服務器端的相同用戶主目錄的.ssh目錄下,並且文件名叫authorized_keys,如果此文件已經存在,並且儲存了其他機器的密鑰,就需要把.pub文件內容添加進來。
另外還需要把服務器端的密鑰驗證方式打開。
說明:1.如果想在多台機器上無密碼登陸,需要分別給每台機器生成密鑰,把公鑰添加到服務器端相應用戶名下的authorized_keys文件中。
2.密鑰文件丟失,或者系統重裝後,需要重新制作密鑰。
3.windows機器ssh登陸到unix服務器,也可以做無密碼密鑰登陸。需要使用SecureCRT生成公鑰,然後拷貝到ssh服務器。