又很久沒寫博客了,今天寫一篇很有用的。嘿嘿,剛解決了問題,搞得我三天沒睡好覺。
現在一身輕松,希望同樣問題的小伙伴能解決同樣的問題,睡個好覺,也是給自己留個筆記。
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連接我沒有講的太清楚,那些網上到處都是,就不說了 ~。~