阿里云主機ssh 免密碼登錄
- 云主機配置:
操作系統: CentOS 7.0 64位
CPU: 1 核
公網IP: 78.129.23.45
用戶名: root
密碼:bugaosuni
- 本地環境:
我在VMware下安裝的Ubuntu 14.04.本文的主要目的就是在Ubuntu上能夠免密碼登錄云主機。
具體設置步驟
Ubuntu 客戶端
- 進入.ssh 文件夾,如果沒有就創建一個.ssh文件夾
- mkdir ~/.ssh
- cd ~/.ssh/
- 生成rsa秘鑰
- ssh-keygen -t rsa
在該文件夾下就會產生三個文件夾:id_rsa,id_rsa.pub,know_hosts。
id_rsa:存儲私鑰,記得只能自己看哦。別人那到這個文件就完蛋蛋咯。
id_rsa.pub:存儲公鑰,用來通信加密使用,有了這個人家才能確定這是你。
- 公鑰拷貝到云主機
scp id_rsa.pub root@78.129.23.45:/root/.ssh/id_rsa.pub
Note:云主機上沒有.ssh/文件時,你要自己建立一個。
云主機端
- 登錄到云主機
- 進入.ssh/文件夾
- cd /root/.ssh/
- 將客戶端公鑰放入云主機識別keys文件夾中
- cat id_rsa.pub >> authorized_keys
- 銷毀公鑰
rm id_rsa.pub
Ubuntu 客戶端
這個時候就可以登錄云主機了
ssh root@78.129.23.45
scp遠程拷貝文件時提示錯誤:
Warning: Permanently added '10.0.0.182' (RSA) to the list of known hosts.
Permission denied (publickey).
解決:
登錄10.0.0.182,將/etc/ssh/sshd_config文件中的PasswordAuthentication no 改為PasswordAuthentication yes
重啟sshd服務:/etc/init.d/sshd restart
問題解決。
原因:scp是基于ssh的拷貝服務,ssh在沒有密鑰登錄的情況下,禁用了密碼登錄,故出現如上錯誤。
服務端SSH 服務配置了禁止root用戶登錄策略。
處理辦法
說明:相關策略可以提高服務器的安全性。請用戶基于安全性和易用性權衡后,再確定是否需要修改相關配置。
要解決此問題,請進行如下配置檢查和修改:
- 通過 管理終端 進入系統。
- 通過 cat 等指令查看 /etc/ssh/sshd_config 中是否包含類似如下配置:PermitRootLogin no
參數說明:
未配置該參數,或者將參數值配置為 yes (默認情況),都允許 root 用戶登錄。只有顯示的設置為 no 時,才會阻斷root 用戶登錄。
該參數只會影響用戶的 SSH 登錄,不影響用戶通過 管理終端 等其它方式登錄系統。
如果需要修改相關策略配置,在繼續之前建議進行文件備份。
使用 vi 等編輯器,將參數值設置為 yes,或者整個刪除或注釋(在最開頭添加 # 號)整行配置。比如:# PermitRootLogin yes
使用如下指令重啟 SSH 服務:service sshd restart
嘗試再次使用 root 用戶登錄服務器。
出現的問題以及解決方案
當出現Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 警告的時候,恭喜你,你已經離成功很近了。
遠程主機這里設為slave2,用戶為Hadoop。
本地主機設為slave1
以下都是在遠程主機slave2上的配置,使得slave1可以免密碼連接到slave2上。如果想免密碼互聯,原理一樣的,在slave1上也這么配置即可!
(1)首先:配置ssh服務器配置文件。
在root 用戶下才能配置。
vi /etc/ssh/sshd_config
權限設為no:
PermitRootLogin yes
UsePAM yes
PasswordAuthentication yes
如果前面有# 號,將#號去掉,之后將yes修改為no。
修改之后為:
PermitRootLogin no
UsePAM no
PasswordAuthentication no
權限設為yes:
RSAAuthentication yes
PubkeyAuthentication yes
(2)重啟sshd服務
systemctl restart sshd.service
systemctl status sshd.service #查看ssh服務的狀態
systemctl start sshd.service #開啟ssh服務
sytemctl enable sshd.service #ssh服務隨開機啟動,還有個disabled
systemctl stop sshd.ervice #停止
正常情況下應該是Active:active(running)
(3)修改文件夾以及文件的權限。
chmod 700 /home/Hadoop/.ssh
chmod 644 /home/Hadoop/.ssh/authorized_keys
(4)在slave1上進行測試
ssh slave2
今天處理 ssh連接至 ubuntu 服務器時,提示以下錯誤:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
da:f7:3e:ba:f7:00:e6:44:76:f2:58:6e:48:******.
Please contact your system administrator.
Add correct host key in /用戶home目錄/.ssh/known_hosts to get rid of this message.
Offending RSA key in /用戶home目錄/.ssh/known_hosts:1
RSA host key for ip地址 has changed and you have requested strict checking.
Host key verification failed.
經過google,出現這個問題的原因是,第一次使用SSH連接時,會生成一個認證,儲存在客戶端的known_hosts中。
可使用以下指令查看:
ssh-keygen -l -f ~/.ssh/known_hosts
由于服務器重新安裝系統了,所以會出現以上錯誤。
解決辦法
ssh-keygen -R 服務器端的ip地址
會出現以下提示:
Host 192.168.3.10 found: line 1 type RSA
/用戶home目錄/.ssh/known_hosts updated.
Original contents retained as /用戶home目錄/.ssh/known_hosts.old
重新連線,出現以下提示:
The authenticity of host '192.168.3.10 (192.168.3.10)' can't be established.
RSA key fingerprint is da:f7:3e:ba:f7:00:e6:44:76:f2:58:6e:48:****.
Are you sure you want to continue connecting (yes/no)?