[SSH服務]——一個SSH無密碼登陸實驗

Jelly_lyj發表於2017-03-18

實驗拓撲圖

              

實驗描述

      機房內有兩臺伺服器:

            (1)B伺服器10.0.10.158,充當Web伺服器,有普通使用者user_00

            (2)C伺服器10.0.10.191,充當Mysql伺服器,有普通使用者user_00

       有伺服器A 10.0.10.198,供管理員平常使用來管理機房內的機器。為方便起見,所以要求做到:

            (1)A伺服器能SSH遠端登入(以user_00的身份)到B和C,且實現無密碼登陸;

            (2)遠端登入後,user_00可以直接sudo到root而不需要密碼。

 

SSH工作原理詳解可參考我的博文:《ssh詳解》

 


在伺服器B:10.0.10.158上的操作

# 建立普通使用者user_00
[root@lyj1 .ssh]# useradd user_00
[root@lyj1 .ssh]# passwd user_00
# 編輯SSH配置檔案
[root@lyj1 .ssh]# vim /etc/ssh/sshd_config 
Port 22
PermitRootLogin no              #禁止以root使用者登入
PubkeyAuthentication yes        #允許使用Key進行登入
# 重啟SSH服務使配置更改生效
[root@lyj1 .ssh]# service sshd restart
Stopping sshd:                                         [  OK  ]
Starting sshd:                                         [  OK  ]

 

在伺服器C:10.0.10.191上的操作

# 建立普通使用者user_00
[root@lyj2 .ssh]# useradd user_00
[root@lyj2 .ssh]# passwd user_00
# 編輯SSH配置檔案
[root@lyj2 .ssh]# vim /etc/ssh/sshd_config 
Port 22
PermitRootLogin no              #禁止以root使用者登入
PubkeyAuthentication yes        #允許使用Key進行登入
# 重啟SSH服務使配置更改生效
[root@lyj2 .ssh]# service sshd restart
Stopping sshd:                                         [  OK  ]
Starting sshd:                                         [  OK  ]

  

在伺服器A:10.0.10.198上的操作

# 切換到user_00的家目錄/home/user_00下
[root@localhost ~]# su - user_00
[user_00@localhost ~]$ pwd
/home/user_00
# 生成公鑰和私鑰
[user_00@localhost ~]$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_00/.ssh/id_rsa): 
Created directory '/home/user_00/.ssh'.                             #在使用者的家目錄/home/user_00下建立.ssh目錄
Enter passphrase (empty for no passphrase):                         #要求輸入加密短語(可以不輸)
Enter same passphrase again:                                        #再次輸入加密短語
Your identification has been saved in /home/user_00/.ssh/id_rsa.    #生成了私鑰存放在使用者家目錄下的.ssh/id_rsa
Your public key has been saved in /home/user_00/.ssh/id_rsa.pub.    #生成了公鑰存放在使用者家目錄下的.ssh/id_rsa.pub
The key fingerprint is:
7f:02:95:d2:12:c9:41:27:c8:50:66:aa:5c:68:69:73 user_00@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|    .+++=o.      |
|   o +o o= .     |
|  * E   o +      |
| + =     +       |
|  o     S        |
|         o       |
|          o .    |
|           o     |
|                 |
+-----------------+
[user_00@localhost ~]$ pwd
/home/user_00
[user_00@localhost ~]$ ls ./.ssh/                           #家目錄/home/user_00下有了.ssh目錄,該目錄下也產生了公鑰和私鑰檔案
id_rsa   id_rsa.pub

[user_00@localhost ~]$ cd .ssh/
[user_00@localhost .ssh]$ cat id_rsa.pub > authorized_keys  #將公鑰複製一份並命名為authorized_keys
[user_00@localhost .ssh]$ chmod 644 authorized_keys         #將authorized_keys的許可權改為644 #這個許可權一定要改!
[user_00@localhost .ssh]$ ll
總用量 12
-rw-r--r-- 1 user_00 user_00  411 6月  23 19:07 authorized_keys
-rw------- 1 user_00 user_00 1743 6月  23 19:02 id_rsa
-rw-r--r-- 1 user_00 user_00  411 6月  23 19:02 id_rsa.pub

 

為了實現A能無密碼SSH登入到B和C,則必須使得B和C信任A,即讓B和C擁有A的金鑰。

方法是將A伺服器上的/home/user_00/.ssh/authorized這個公鑰,拷貝到B和C上各自的/home/user_00/.ssh目錄下去。

要注意拷貝過去之後.ssh目錄和authorized檔案的屬主屬組和許可權(否則很容易出錯)。

       

       

這個時候A可以以user_00使用者的身份無密碼登陸到B和C了,但因為user_00是普通使用者,所以sudo到root使用者還是需要密碼:

[user_00@localhost ~]$ ssh 10.0.10.191
Last login: Thu Nov 26 02:10:22 2009 from 10.0.10.198
[user_00@localhost ~]$ ssh 10.0.10.191
Last login: Thu Nov 26 02:56:53 2009
[user_00@lyj2 ~]$ sudo mkdir /test
[sudo] password for user_00: 

為了實現user_00使用者可以直接sudo到root使用者,我們可以分別修改B和C上的/etc/sudoers檔案,新增如下內容:

 

這樣一來,user_00再sudo到root使用者就不需要再輸入密碼了:

[user_00@localhost ~]$ ssh 10.0.10.191
Last login: Thu Nov 26 02:57:43 2009 from 10.0.10.198
[user_00@lyj2 ~]$ sudo mkdir /test2

  

  

  

相關文章