溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2021-12-08 10:02:39 來源:億速云 閱讀:194 作者:iii 欄目:大數(shù)據(jù)

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

需求

IP1:1.1.1.1 賬戶kg

IP2:1.1.1.2 賬戶kg

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

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

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

一直按回車鍵,會出現(xiàn)如上圖,也會有你的公私鑰文件的路徑,比如我的:/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ī)器,并生效,期間會讓你再次輸一次你的密碼,如下圖,輸入一下 就好

Linux ssh免秘鑰登陸怎么實現(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文件,可以看到對應(yīng)的變化:本地機(jī)器的公鑰已經(jīng)增加到遠(yuǎn)程機(jī)器的配置文件中了Linux ssh免秘鑰登陸怎么實現(xiàn)

8.注意事項

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

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

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

上面是 手動實現(xiàn) 兩個IP 之間的免秘鑰登陸,接下來說下多個服務(wù)器之間免秘鑰登陸

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

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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:

是因為id_rsa的權(quán)限太高了,以前是777,解決方式如下:

cd ~/.ssh
chmod 700 id_rsa

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          打開命令行,輸入

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

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

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

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

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

   <3>驗證自己ssh自己

          打開命令行,輸入:

          ssh 192.168.10.66                  #centsoNameNode的ip

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

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

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

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

          cd /home/roboson                      #切換目錄

          ls                                                  #查看目錄下的文件

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

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

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

          有的時候,會報這樣的錯

          Agent admitted failure to sign using the key

          解決方法:

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

          ssh-add

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

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

     登錄到centosNameNode上,然后,打開命令行,輸入指令: 

    cd ~/.ssh

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

     

上面比較瑣碎,其實 匯總公鑰的時候用 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命令也會給遠(yuǎn)程主機(jī)的用戶主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設(shè)置合適的權(quán)限。
 

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

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

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

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

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

有時候機(jī)器設(shè)定防火墻了 必須輸入密碼可以如下方法,在使用ssh登錄遠(yuǎn)程服務(wù)器的時候,在執(zhí)行完ssh user@ip后,要輸入登錄密碼,有時候登錄密碼記不住,這樣以來Ian帶來的很多的麻煩,有沒有一種在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 密碼驗證,允許你用 -p 參數(shù)指定明文密碼,然后直接登錄遠(yuǎn)程服務(wù)器。 它支持密碼從命令行,文件,環(huán)境變量中讀取。

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

對于debian/ubuntu系統(tǒng)來說,安裝方式很簡單:

sudo apt-get install sshpass

對于其他的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命令集合就能實現(xiàn)ssh登錄的時候加入密碼了,這樣把登錄某臺計算機(jī)的命令寫成shell腳本,后面就十分的方便了

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

到此,關(guān)于“Linux ssh免秘鑰登陸怎么實現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI