您好,登錄后才能下訂單哦!
這篇文章主要介紹“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 命令,生成密鑰文件
一直按回車鍵,會出現(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ī)器,并生效,期間會讓你再次輸一次你的密碼,如下圖,輸入一下 就好
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ī)器的配置文件中了
8.注意事項
免密碼登錄的處理是用戶對用戶的,切換其他用戶后,仍然需要輸入密碼
公鑰傳到遠(yuǎn)程機(jī)器并生效的操作,可用其他方式實現(xiàn),如scp后修改authorized_keys
遠(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,在命令行下輸入: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,查看是否有密鑰存在。
輸入完ssh-keygen - rsa后,一直默認(rèn)Enter下去,密碼為空就行。如下圖所示,說明生成密鑰成功
好,到這里,客戶端節(jié)點的密鑰文件已經(jīng)創(chuàng)建完成,按照上述方法,依舊在centosDateNode1節(jié)點和
centosDateNode2節(jié)點上一次創(chuàng)建密鑰文件。
<1>將centosNameNode自己的公鑰寫入到自己的~/.ssh/authorized_keys中
打開命令行,輸入
OK,然后,就是修改sshd以及上面所提到的authorized_keys以及目錄~/.ssh權(quán)限的修改
<2>centosNameNode中權(quán)限以及修改sshd
修改目錄~/.ssh以及~/.ssh/authorized_keys文件的權(quán)限,打開命令行,輸入:
<3>驗證自己ssh自己
打開命令行,輸入:
ssh 192.168.10.66 #centsoNameNode的ip
發(fā)現(xiàn)并沒有要求輸入密碼,而是自動登陸了,說明自己的配置成功了,事實上Hadoop的偽分布式模
式就是自己遠(yuǎn)程登陸自己
說明上傳成功,然后,登錄到centosNameNode上,查看是否收到,輸入指令:
cd /home/roboson #切換目錄
ls #查看目錄下的文件
然后,輸入vi ~/.ssh/authorized_keys指令,發(fā)現(xiàn)文件中又多了一堆數(shù)字
有的時候,會報這樣的錯
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文件中。
==============================
有時候機(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>
免責(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)容。