Linux配置SSH免密碼登錄(非root賬號)

Linux環(huán)境下,經(jīng)常通過SSH從一臺服務(wù)器登錄到另一臺服務(wù)器,并且登錄身份不是root賬號,每次都要輸入密碼挺麻煩的,所以今天實(shí)戰(zhàn)一下如何配置非root賬號的免密碼登錄;
如果想要看到圖片配置,可以查看我其他的文章

實(shí)戰(zhàn)環(huán)境

本次實(shí)戰(zhàn)環(huán)境是三臺CentOS 7.5機(jī)器,它們的相關(guān)信息如下所示:

IP 地址 主機(jī)名
192.168.50.160 node0
192.168.50.161 node1
192.168.50.162 node2

準(zhǔn)備工作

  • 1.確認(rèn)ssh服務(wù)已經(jīng)安裝并打開;
    2.打開文件/etc/ssh/sshd_config,確保以下配置已經(jīng)添加(如果被"#“注釋了就把”#"刪除):
AuthorizedKeysFile      .ssh/authorized_keys
PubkeyAuthentication yes
  • 3.三臺機(jī)器的/etc/hostname文件中的內(nèi)容分別是node0、node1、node2;
    4.三臺機(jī)器的/etc/hosts文件尾部都添加以下三行內(nèi)容(請按照自己機(jī)器的ip地址來填寫):
192.168.50.160 node0
192.168.50.161 node1
192.168.50.162 node2
  • 5.三臺機(jī)器上都有非root賬號,為了方便操作,這里為三臺機(jī)器都創(chuàng)建了名為hadoop的賬號和群組,創(chuàng)建命令
groupadd hadoop && useradd -d /home/hadoop -g hadoop -m hadoop

創(chuàng)建完賬號后記得用命令passwd初始化hadoop賬號的密碼;

    1. 在node0機(jī)器上輸入ssh hadoop@node1,嘗試ssh登錄node1,此時(shí)由于未配置免密碼登錄,所以控制臺要求輸入node1的密碼,如下:
[hadoop@node0 ~]$ ssh hadoop@node1
The authenticity of host 'node1 (192.168.50.161)' can't be established.
ECDSA key fingerprint is SHA256:DJ8ZdacngzPjAszOZTpx1WudYX+u0aAUld7ZYSK9/4g.
ECDSA key fingerprint is MD5:86:78:2f:c7:c2:97:7f:79:dd:b7:d0:26:fd:bf:a6:9b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'node1,192.168.50.161' (ECDSA) to the list of known hosts.
hadoop@node1's password: 
Last login: Thu Feb  7 18:10:40 2019 from 192.168.50.1
[hadoop@node1 ~]$

準(zhǔn)備工作已經(jīng)完成,接下來開始實(shí)戰(zhàn)免密碼登錄配置;

生成秘鑰(三臺機(jī)器都要執(zhí)行)

  • 1.以hadoop賬號登錄;
    2.輸入ssh-keygen -t rsa,然后一路回車,順利生成秘鑰文件,如下:
[hadoop@node0 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Ct6HIbAfypJpr/VLzxOeWX4WngQPUaSrJTguPN23Eh4 hadoop@node0
The key's randomart image is:
+---[RSA 2048]----+
|          oo     |
|         ..      |
|  .      ..      |
|   o  .  o.      |
|  . +o..So+      |
| +.+o=oE+. +     |
|+.o=o+*oX.o o    |
|..o = oO...=     |
| ... o.oo.o      |
+----[SHA256]-----+
[hadoop@node0 ~]$

進(jìn)入目錄~/.ssh/可見如下內(nèi)容:

[hadoop@node0 ~]$ cd ~/.ssh/
[hadoop@node0 .ssh]$ ls
id_rsa  id_rsa.pub  known_hosts

配置秘鑰授權(quán)文件

  • 1.以hadoop賬號登錄node0機(jī)器;
    2.生成一個(gè)空白文件:
touch ~/.ssh/authorized_keys

將node0自己的公鑰放入文件authorized_keys中:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

hadoop賬號登錄node1機(jī)器,執(zhí)行以下命令,即可將node1的公鑰傳輸?shù)?strong>node0機(jī)器,文件名為node1.id_rsa.pub

scp ~/.ssh/id_rsa.pub hadoop@node0:~/.ssh/node1.id_rsa.pub

期間會要求輸入node0的hadoop賬號的密碼,輸入后傳輸完成,在node0的/home/hadoop/.ssh目錄下,多了個(gè)名為node1.id_rsa.pub的文件;

    1. 在node0機(jī)器執(zhí)行以下命令,即可將node1.id_rsa.pub的內(nèi)容寫入authorized_keys文件:
cat ~/.ssh/node1.id_rsa.pub >> ~/.ssh/authorized_keys

此時(shí)authorized_keys文件中已經(jīng)有了node0和node1的公鑰;

    1. hadoop賬號登錄node2機(jī)器,執(zhí)行以下命令,即可將node2的公鑰傳輸?shù)?strong>node0機(jī)器,文件名為node2.id_rsa.pub
scp ~/.ssh/id_rsa.pub hadoop@node0:~/.ssh/node2.id_rsa.pub

期間會要求輸入node0的hadoop賬號的密碼,輸入后傳輸完成,在node0的/home/hadoop/.ssh目錄下,多了個(gè)名為node2.id_rsa.pub的文件;

    1. 在node0機(jī)器執(zhí)行以下命令,即可將node2.id_rsa.pub的內(nèi)容寫入authorized_keys文件:
cat ~/.ssh/node2.id_rsa.pub >> ~/.ssh/authorized_keys

此時(shí)authorized_keys文件中已經(jīng)有了node0、node1、node2的公鑰;

同步秘鑰授權(quán)文件

hadoop賬號登錄node0機(jī)器,執(zhí)行以下命令將秘鑰授權(quán)文件同步到node1機(jī)器:

scp ~/.ssh/authorized_keys hadoop@node1:~/.ssh/

hadoop賬號登錄node0機(jī)器,執(zhí)行以下命令將秘鑰授權(quán)文件同步到node2機(jī)器:

scp ~/.ssh/authorized_keys hadoop@node2:~/.ssh/

至此,秘鑰授權(quán)文件已經(jīng)同步到所有機(jī)器,如果前面的所有操作用的是root賬號,此時(shí)已經(jīng)可以免密碼登錄成功了,但是今天我們用的不是root賬號,此時(shí)在node0輸入命令ssh hadoop@node1,卻發(fā)現(xiàn)依然要求輸入node1的hadoop賬號的密碼,這是因?yàn)槲募臀募A權(quán)限的問題導(dǎo)致的,接下來解決權(quán)限問題;

調(diào)整文件夾和文件的權(quán)限(三臺機(jī)器都要執(zhí)行)

其他的方法配置ssh免秘鑰很容易因權(quán)限問題失敗

  • 1.先調(diào)整文件夾~/.ssh的權(quán)限:
chmod 700  ~/.ssh
  • 2.再調(diào)整文件~/.ssh/authorized_keys的權(quán)限:
chmod 600  ~/.ssh/authorized_keys
  • 3.至此,非root賬號的SSH免密碼登錄配置已經(jīng)完成,在node0輸入命令ssh hadoop@node1試試,如下,順利登錄,不需要輸入密碼:
[hadoop@node0 ~]$ ssh hadoop@node1
Last login: Fri Feb  8 00:36:57 2019 from 192.168.119.1
[hadoop@node1 ~]$

再去node1、node2機(jī)器上試試SSH登錄其他機(jī)器,發(fā)現(xiàn)也能免密碼登錄;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 三臺機(jī)器分別為node1,node2,node3, 需求:三臺機(jī)器兩兩之間都需要讓root用戶免密碼登錄 1、以n...
    ThechiefofYanwu閱讀 1,030評論 0 0
  • 1.Linux安裝前的配置 1.1.關(guān)閉防火墻 本站文檔是假定「服務(wù)器在防火墻以內(nèi)」的前提下編纂的,在這個(gè)前提下...
    lao男孩閱讀 3,481評論 0 4
  • 轉(zhuǎn)自:https://blog.51cto.com/3381847248/2066599 一、ssh詳解 1、什么...
    950545c4cd64閱讀 51,435評論 0 6
  • 節(jié)點(diǎn)均為centOS7系統(tǒng),進(jìn)行ssh免密登錄操作 假設(shè)想從node1免密登錄到node2,node3 一、生成公...
    蘇林欣閱讀 687評論 0 0
  • 最近在學(xué)習(xí)大數(shù)據(jù),在自己本地裝了三個(gè)虛擬機(jī),學(xué)習(xí)搭建hadoop集群。記錄下過程,方便日后查看。 1.準(zhǔn)備工作 ...
    90后老青年閱讀 453評論 1 1

友情鏈接更多精彩內(nèi)容