實驗拓撲圖
實驗描述
機房內有兩臺伺服器:
(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