普通用戶ssh免密登陸完美解決(Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password))


又很久沒寫博客了,今天寫一篇很有用的。嘿嘿,剛解決了問題,搞得我三天沒睡好覺。

現在一身輕松,希望同樣問題的小伙伴能解決同樣的問題,睡個好覺,也是給自己留個筆記。

 

ssh免密登陸(我是使用hadoop集群時需要配置),從一台虛擬機ssh到另一台虛擬機,包括普通用戶和root用戶皆行。

接下來看我的騷操作(當然我大部分講解的是主要的配置)

↓ 

首先你應該能ping通你的另一台機器。我使用的是虛擬機下的主機模式,不能上網,但是虛擬機間相互能通。(方法不同但相信大家應該都可以了)

 

ssh能連接的基本原理我廢話說一句,你也應該知道,不然都不知道自己搞的什么:服務器生成一把密鑰(id_rsa),一把公鑰(id_rsa.pub)。將公鑰拷貝到客戶端的~/.ssh文件中再cat./id_rsa.pub >> ./authorized_keys,此時你便可以連接客戶端了,具體的我們接着看下面。

 

在實現虛擬機之間ssh之前,我完成了本機對自己的ssh(ssh localhost、ssh username)這里是免密登陸的哦!!

拷貝你的公鑰到另一台電腦:

scp ~/.ssh/id_rsa.pub root@名字:/home/hadoop/(當然更簡單的方式就是直接將id_rsa.pub里面的東西復制到另一台的authorized_keys)

 

此時可以ssh一下了:

我是用root登陸的,顯示不行,那是因為我關閉了root的登陸權限,如果你要使用root登陸可以執行

vi /etc/ssh/sshd_config

 

修改為PubkeyAuthentication yes(如果前面有#,就去掉#)

service sshd restart重啟sshd服務后再次連接就行了

 

后面我們重點講一下普通用戶ssh到另一台電腦上(因為我在這里遇到了一個很大的坑!!!!!)

首先你可以試試 

ssh username@hostname

這里username是你要連接的電腦的用戶名,hostname是它的地址。


如果可以的話,還是恭喜你。一次搞定。

如果失敗

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

應該是你的配置文件出現了問題 /etc/ssh/sshd_config

這里我們使用簡單的連接方式,很多同學可能也會使用另一種連接方式,那就是

ssh 名字

但是你會發現這樣會出現

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

那是因為你沒有指定連接的用戶名,它會默認使用當前的用戶名所以會錯誤。

 

如果你不嫌麻煩可以使用

ssh username@hostname

當然也可以使用以下簡單的方式:映射關系

在.ssh文件下創建一個文本config(如果沒有)

編輯文檔:

Host hostname

user username

添加的是對你連接關系的映射。

從hadoop2使用ssh hadoop3時默認改為ssh hadoop3@hadoop3,而不是原來的ssh hadoop2@hadoop3了

最后修改的最重要的一點記住權限問題config文檔的權限同組用戶嚴格為不能寫權限

修改:

chmod 644 config 或 chmod 600 config

再次使用 ssh 用戶名 就ok了!!!

 

 

這篇文章我主要想說的就是config文件,不嫌麻煩你可以使用 ssh hadoop3@hadoop3,嫌麻煩你可以添加config文件的映射,直接ssh hadoop2。

至於前面的ssh連接我沒有講的太清楚,那些網上到處都是,就不說了 ~。~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM