Linuxssh免秘鑰登陸怎么實(shí)現(xiàn)

這篇文章主要介紹“Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)”,在日常操作中,相信很多人在Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)平山,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575

需求

IP1:1.1.1.1 賬戶kg

IP2:1.1.1.2 賬戶kg

想實(shí)現(xiàn) IP1 免秘鑰登陸 IP2 步驟如下

登陸到1.1 然后cd  ~/.ssh, shell 中運(yùn)行  ssh-keygen -t rsa 命令,生成密鑰文件

Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

一直按回車鍵,會(huì)出現(xiàn)如上圖,也會(huì)有你的公私鑰文件的路徑,比如我的:/home/lx-yf/.ssh/id_rsa.pub

3.在相應(yīng)的目錄下/home/lx-yf/.ssh/ 查看生成的密鑰文件,其中:id_rsa為私鑰文件,id_rsa.pub為公鑰文件

4.本地機(jī)器執(zhí)行命令如: ssh-copy-id -i /home/lx-yf/.ssh/id_rsa.pub kg@1.1.1.2, 將公鑰文件傳輸?shù)倪h(yuǎn)程機(jī)器,并生效,期間會(huì)讓你再次輸一次你的密碼,如下圖,輸入一下 就好

Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

5.完成標(biāo)志如下圖

6.再次使用已經(jīng)做免密處理的用戶登錄遠(yuǎn)程機(jī)器,已經(jīng)不需要密碼了,免密登錄處理完成。

本地IP 1.1.1.1 
ssh kg@1.1.1.2 可直接登陸了

7.查看遠(yuǎn)程機(jī)器的authorized_keys文件,可以看到對(duì)應(yīng)的變化:本地機(jī)器的公鑰已經(jīng)增加到遠(yuǎn)程機(jī)器的配置文件中了Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

8.注意事項(xiàng)

  1. 免密碼登錄的處理是用戶對(duì)用戶的,切換其他用戶后,仍然需要輸入密碼

  2. 公鑰傳到遠(yuǎn)程機(jī)器并生效的操作,可用其他方式實(shí)現(xiàn),如scp后修改authorized_keys

  3. 遠(yuǎn)程機(jī)器的.ssh目錄需要700權(quán)限,authorized_keys文件需要600權(quán)限

上面是 手動(dòng)實(shí)現(xiàn) 兩個(gè)IP 之間的免秘鑰登陸,接下來(lái)說(shuō)下多個(gè)服務(wù)器之間免秘鑰登陸

想通過(guò)ssh-copy-id將本地的~/.ssh/id_rsa.pub拷貝到另外一臺(tái)機(jī)器,從而實(shí)現(xiàn)免密碼登錄,結(jié)果拷貝之后,ssh登錄遠(yuǎn)程機(jī)器的時(shí)候提示

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '~/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "~/.ssh/id_rsa": bad permissions
user@remoteip's password:

是因?yàn)閕d_rsa的權(quán)限太高了,以前是777,解決方式如下:

cd ~/.ssh
chmod 700 id_rsa

SSH免密登陸操作跟 免密登陸時(shí)底層驗(yàn)證機(jī)制如下圖

Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

         如果沒(méi)有安裝ssh,在命令行下輸入:yum install ssh進(jìn)行安裝 或者apt-get install ssh,可以參考下面的博文

         http://www.cnblogs.com/alaska1131/articles/1659654.html

   <2>在客戶端節(jié)點(diǎn)創(chuàng)建密鑰文件

                查看客戶端節(jié)點(diǎn)是否已經(jīng)創(chuàng)建了密鑰文件,我們一centosNameNode為例。打開(kāi)命令行,輸入以下

          指令: ls ~/.ssh,查看是否有密鑰存在。

          Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

          輸入完ssh-keygen - rsa后,一直默認(rèn)Enter下去,密碼為空就行。如下圖所示,說(shuō)明生成密鑰成功

          Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

           好,到這里,客戶端節(jié)點(diǎn)的密鑰文件已經(jīng)創(chuàng)建完成,按照上述方法,依舊在centosDateNode1節(jié)點(diǎn)和

           centosDateNode2節(jié)點(diǎn)上一次創(chuàng)建密鑰文件。

5.將各客戶端節(jié)點(diǎn)的公鑰寫入centosNameNode中

   <1>將centosNameNode自己的公鑰寫入到自己的~/.ssh/authorized_keys中

          打開(kāi)命令行,輸入

       Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

         OK,然后,就是修改sshd以及上面所提到的authorized_keys以及目錄~/.ssh權(quán)限的修改

   <2>centosNameNode中權(quán)限以及修改sshd                               

         修改目錄~/.ssh以及~/.ssh/authorized_keys文件的權(quán)限,打開(kāi)命令行,輸入:

   Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

   <3>驗(yàn)證自己ssh自己

          打開(kāi)命令行,輸入:

          ssh 192.168.10.66                  #centsoNameNode的ip

          發(fā)現(xiàn)并沒(méi)有要求輸入密碼,而是自動(dòng)登陸了,說(shuō)明自己的配置成功了,事實(shí)上Hadoop的偽分布式模

          式就是自己遠(yuǎn)程登陸自己

          Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

         說(shuō)明上傳成功,然后,登錄到centosNameNode上,查看是否收到,輸入指令:

          cd /home/roboson                      #切換目錄

          ls                                                  #查看目錄下的文件

          Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

           然后,輸入vi ~/.ssh/authorized_keys指令,發(fā)現(xiàn)文件中又多了一堆數(shù)字

           Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)

          有的時(shí)候,會(huì)報(bào)這樣的錯(cuò)

          Agent admitted failure to sign using the key

          解決方法:

          在當(dāng)前用戶下執(zhí)行命令:

          ssh-add

          然后,利用同樣的方法,將centosDateNode2的公鑰也加入。

6.將在centosNameNode中整合的文件摻入剩余兩個(gè)節(jié)點(diǎn)

     登錄到centosNameNode上,然后,打開(kāi)命令行,輸入指令: 

    cd ~/.ssh

     scp authorized_keys 192.168.10.67:/home/roboson/.ssh/authorized_keys  #將整合好的 ahthorized_keys傳遞給centosDateNode1

     

上面比較瑣碎,其實(shí) 匯總公鑰的時(shí)候用 ssh-copy-id 指令比較好。

ssh-copy-id -i .~/ssh/id_rsa.pub 目標(biāo)機(jī)器用戶名@目標(biāo)IP

sh-copy-id命令可以把本地主機(jī)的公鑰復(fù)制到遠(yuǎn)程主機(jī)的authorized_keys文件上,

ssh-copy-id命令也會(huì)給遠(yuǎn)程主機(jī)的用戶主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設(shè)置合適的權(quán)限。
 

ssh-copy-id命令可以把本地的ssh公鑰文件安裝到遠(yuǎn)程主機(jī)對(duì)應(yīng)的賬戶下。                                                                                                          
達(dá)到的功能:
       ssh-copy-id - 將你的公共密鑰填充到一個(gè)遠(yuǎn)程機(jī)器上的authorized_keys文件中。
 
使用模式:
       ssh-copy-id [-i [identity_file]] [user@]machine
 
描述:  
       ssh-copy-id 是一個(gè)實(shí)用ssh去登陸到遠(yuǎn)程服務(wù)器的腳本(假設(shè)使用一個(gè)登陸密碼,
                   因此,密碼認(rèn)證應(yīng)該被激活直到你已經(jīng)清理了做了多個(gè)身份的使用)。
                   它也能夠改變遠(yuǎn)程用戶名的權(quán)限,~/.ssh和~/.ssh/authorized_keys
                   刪除群組寫的權(quán)限(在其它方面,如果遠(yuǎn)程機(jī)上的sshd在它的配置
                   文件中是嚴(yán)格模式的話,這能夠阻止你登陸。)。

                   如果這個(gè) “-i”選項(xiàng)已經(jīng)給出了,然后這個(gè)認(rèn)證文件(默認(rèn)是~/.ssh
                   /id_rsa.pub)被使用,不管在你的ssh-agent那里是否有任何密鑰。

                   另外,命令 “ssh-add -L” 提供任何輸出,它使用這個(gè)輸出優(yōu)先于
                   身份認(rèn)證文件。如果給出了參數(shù)“-i”選項(xiàng),或者ssh-add不產(chǎn)生輸出,
                   然后它使用身份認(rèn)證文件的內(nèi)容。一旦它有一個(gè)或者多個(gè)指紋,它使
                   用ssh將這些指紋填充到遠(yuǎn)程機(jī)~/.ssh/authorized_keys文件中。

==============================

ssh登錄時(shí)在參數(shù)中加入密碼的解決方案 

有時(shí)候機(jī)器設(shè)定防火墻了 必須輸入密碼可以如下方法,在使用ssh登錄遠(yuǎn)程服務(wù)器的時(shí)候,在執(zhí)行完ssh user@ip后,要輸入登錄密碼,有時(shí)候登錄密碼記不住,這樣以來(lái)Ian帶來(lái)的很多的麻煩,有沒(méi)有一種在ssh的參數(shù)中直接加入密碼的方法呢?查看ssh的幫助我們發(fā)現(xiàn)ssh命令并不能在參數(shù)中制定密碼。

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

于是google,找到 sshpass

sshpass:用于非交互的ssh 密碼驗(yàn)證,允許你用 -p 參數(shù)指定明文密碼,然后直接登錄遠(yuǎn)程服務(wù)器。 它支持密碼從命令行,文件,環(huán)境變量中讀取。

首先在機(jī)器上安裝sshpass

對(duì)于debian/ubuntu系統(tǒng)來(lái)說(shuō),安裝方式很簡(jiǎn)單:

sudo apt-get install sshpass

對(duì)于其他的linux,可以編譯sshpass的源碼安裝:

wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz  
tar xvzf sshpass-1.05.tar.gz  
./configure 
make  
sudo make install

安裝好之后,使用sshpass命令,得到如下:

Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename   Take password to use from file
   -d number     Use number as file descriptor for getting password
   -p password   Provide password as argument (security unwise)
   -e            Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -h            Show help (this screen)
   -V            Print version information
At most one of -f, -d, -p or -e should be used

于是把sshpass和ssh命令集合就能實(shí)現(xiàn)ssh登錄的時(shí)候加入密碼了,這樣把登錄某臺(tái)計(jì)算機(jī)的命令寫成shell腳本,后面就十分的方便了

#!/bin/bash
sshpass -p "XXX" ssh user@IP

到此,關(guān)于“Linux ssh免秘鑰登陸怎么實(shí)現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

分享標(biāo)題:Linuxssh免秘鑰登陸怎么實(shí)現(xiàn)
轉(zhuǎn)載源于:http://www.muchs.cn/article42/jpjshc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)公司、用戶體驗(yàn)、靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)