首先,在本地機器上產(chǎn)生公鑰: Java代碼
然后把產(chǎn)生的公鑰傳到想要登陸的遠程機器上,如果是root用戶登陸遠程的話,把公鑰放在/root/.sshd目錄下面。 Java代碼
在遠程的機器上修改該文件的名稱: Java代碼
最終實現(xiàn)ssh的免密碼登陸。 SSH免密碼登陸效果: Java代碼
========================================================================================= 二、多臺服務(wù)器相互無密碼訪問 多臺服務(wù)器相互無密碼訪問,與兩臺服務(wù)器單向無密碼訪問的原理是一樣的,只不過由于是多臺服務(wù)器之間相互無密碼訪問,不能象兩臺服務(wù)器無密碼登錄那樣直接上傳,步驟如下: 1、在每臺服務(wù)器上都執(zhí)行ssh-keygen -t rsa生成密鑰對: #ssh-keygen -t rsa 2、在每臺服務(wù)器上生成密鑰對后,將公鑰復制到需要無密碼登陸的服務(wù)器上: 舉例如192.168.15.240,192.168.15.241,192.168.15.242這三臺服務(wù)器需要做相互免密碼登陸,在每臺服務(wù)器生成密鑰對后,在每臺服務(wù)器上執(zhí)行ssh-copy-id命令(具體說明及用法見最后附錄),將公鑰復制到其它兩臺服務(wù)器上(此處以192.168.15.240為例,用戶為root,其它兩臺步驟相同) #ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.241 #ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.242 以上命令,可以自動將公鑰添加到名為authorized_keys的文件中,在每臺服務(wù)器都執(zhí)行完以上步驟后就可以實現(xiàn)多臺服務(wù)器相互無密碼登陸了 附ssh-copy-id介紹及用法: Linux系統(tǒng)里缺省都包含一個名為ssh-copy-id的工具: # type ssh-copy-id ssh-copy-id is /usr/bin/ssh-copy-id 你用cat或者more命令看一下就知道ssh-copy-id本身其實就是一個shell腳本,用法很簡單: # ssh-copy-id -i ~/.ssh/id_rsa.pub user@server 再也不用記如何拼寫authorized_keys這個文件名了,是不是很爽,可惜別高興太早了,ssh-copy-id有一個很要命的問題,那就是缺省它僅僅支持SSH運行在22端口的情況,不過實際上出于安全的需要,我們往往都會更改服務(wù)器的SSH端口,比如說改成10022端口,這時候你運行ssh-copy-id就會報錯了,直接修改ssh-copy-id腳本當然可以修正這個問題,但是那樣顯得太生硬了,實際上還有更好的辦法: # vi ~/.ssh/config 加上內(nèi)容: Host server Hostname ip Port 10022 你也可以單獨只加入Port一行配置,那樣就是一個全局配置,保存后再運行ssh-copy-id命令就不會報錯了。 補充:經(jīng)網(wǎng)友提示,如果端口不是22,不修改config文件,按如下方式也可以: ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 10022 user@server” |
|