Linux下實現普通用戶免密登錄並執行root權限


需求:服務器的root和密碼登錄都禁用,只開放普通用戶登錄,這時需要給普通用戶配置秘鑰文件,實現無密碼登錄

 需要注意的是使用什么用戶,就把秘鑰文件拷入到該用戶的家目錄下,如果是root用戶,就直接拷貝到/root/.ssh/下(本次測試是使用普通用戶oper測試的)

  1) .ssh目錄的權限必須是700  

  2) .ssh/authorized_keys文件權限必須是600

測試機器:

  host1:192.168.0.131

  host2:192.168.0.132

一、在新機器生成秘鑰:

[root@host1 .ssh]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:O9C8LWfjT44gIJR+URWH3FFJhsgqMU8VmaDDZAGWR7k root@host1
The key's randomart image is:
+---[RSA 2048]----+
|  o+=oo*=Oo=+.   |
| ..==o. B.o..    |
|  o.=* .         |
| o  Eooo         |
|  o o.. S        |
|   o . . +       |
|      . * = .    |
|       . B =     |
|          o.o    |
+----[SHA256]-----+
[root@host1 .ssh]# ls
id_rsa  id_rsa.pub  known_hosts

二、將id_rsa.pub拷入需要登錄的服務器的用戶家目錄下的.ssh/authorized_keys中(即192.168.0.132下的/home/oper/.ssh/authorized_keys)

  以下三種方法任選其一即可

  2.1:通過ssh-copy-id的方式

[root@host2 oper]# mkdir /home/oper/.ssh
[root@host2 oper]# chown oper:oper .ssh/
[root@host2 oper]# chmod 700 .ssh
[root@host2 oper]# ls -la
總用量 20
drwx------. 3 oper oper 111 4月  23 12:58 .
drwxr-xr-x. 5 root root  43 4月  23 10:18 ..
-rw-------. 1 oper oper 104 4月  23 13:01 .bash_history
-rw-r--r--. 1 oper oper  18 8月   3 2017 .bash_logout
-rw-r--r--. 1 oper oper 193 8月   3 2017 .bash_profile
-rw-r--r--. 1 oper oper 231 8月   3 2017 .bashrc
drwx------. 2 oper oper  29 4月  23 14:32 .ssh

[root@host1 .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub oper@192.168.0.132
oper@192.168.0.132's password:
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'oper@192.168.0.132'"
and check to make sure that only the key(s) you wanted were added.
#登錄測試 [root@host1 .
ssh]# ssh oper@192.168.0.132 Last failed login: Mon Apr 23 14:32:40 CST 2018 from 192.168.0.131 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Mon Apr 23 14:21:57 2018 from 192.168.0.131 [oper@host2 ~]$

  2.2:通過scp將內容寫到對方的文件中

[root@host1 .ssh]# scp -p ~/.ssh/id_rsa.pub oper@192.168.0.132:/home/oper/.ssh/authorized_keys
oper@192.168.0.132's password: 
id_rsa.pub     
#登錄測試 100% 392 16.6KB/s 00:00 [root@host1 .ssh]# ssh oper@192.168.0.132 Last login: Mon Apr 23 14:35:06 2018 from 192.168.0.131 [oper@host2 ~]$

  2.3:通過ssh命令寫入,此方式可寫成腳本,然后批量寫入主機

  此方式也可直接把/root/.ssh/id_rsa.pub的內容直接復制粘貼到host2下/home/oper/.ssh/authorized_keys中

[root@host1 .ssh]# ssh oper@192.168.0.132 "echo `cat /root/.ssh/id_rsa.pub` >> /home/oper/.ssh/authorized_keys "
oper@192.168.0.132's password: 
[root@host1 .ssh]# ssh oper@192.168.0.132
oper@192.168.0.132's password: 

[root@host2 .ssh]# pwd
/home/oper/.ssh
[root@host2 .ssh]# ll
總用量 4
-rw-rw-r--. 1 oper oper 392 4月  23 14:43 authorized_keys
[root@host2 .ssh]# chmod 600 authorized_keys 
[root@host2 .ssh]# ll
總用量 4
-rw-------. 1 oper oper 392 4月  23 14:43 authorized_keys
#登錄測試
[root@host1 .ssh]# ssh oper@192.168.0.132
Last login: Mon Apr 23 14:40:54 2018 from 192.168.0.131
[oper@host2 ~]$ 

出現需要密碼登錄是因為host2的authorized_keys權限沒有設置為600;把權限設置為600后,再執行 ssh oper@192.168.0.132就可以了,如果之前有權限是600的authorized_keys;則可直接登錄

PS:如果普通用戶需要切換到root用戶且無需輸入密碼,則在root用戶模式下執行命令:visudo 

[root@host2 ~]# visudo  #最后一行加入
Cmnd_Alias SU = /bin/su
oper ALL = (root)  NOPASSWD: SU
:wq
[root@host2 ~]# su - oper
#登錄測試 [oper@host2
~]$ sudo su #最好使用sudo su - 完全切換,su會加載不出來環境變量 [root@host2 oper]#
附:文件說明
     ~/.ssh/identity
             該用戶默認的 RSA1 身份認證私鑰(SSH-1)。此文件的權限應當至少限制為"600"。
             生成密鑰的時候可以指定采用密語來加密該私鑰(3DES)。
             ssh(1) 將在登錄的時候讀取這個文件。
     ~/.ssh/identity.pub
             該用戶默認的 RSA1 身份認證公鑰(SSH-1)。此文件無需保密。
             此文件的內容應該添加到所有 RSA1 目標主機的 ~/.ssh/authorized_keys 文件中。
     ~/.ssh/id_dsa
             該用戶默認的 DSA 身份認證私鑰(SSH-2)。此文件的權限應當至少限制為"600"。
             生成密鑰的時候可以指定采用密語來加密該私鑰(3DES)。
             ssh(1) 將在登錄的時候讀取這個文件。
     ~/.ssh/id_dsa.pub
             該用戶默認的 DSA 身份認證公鑰(SSH-2)。此文件無需保密。
             此文件的內容應該添加到所有 DSA 目標主機的 ~/.ssh/authorized_keys 文件中。
     ~/.ssh/id_rsa
             該用戶默認的 RSA 身份認證私鑰(SSH-2)。此文件的權限應當至少限制為"600"。
             生成密鑰的時候可以指定采用密語來加密該私鑰(3DES)。
             ssh(1) 將在登錄的時候讀取這個文件。
     ~/.ssh/id_rsa.pub
             該用戶默認的 RSA 身份認證公鑰(SSH-2)。此文件無需保密。
             此文件的內容應該添加到所有 RSA 目標主機的 ~/.ssh/authorized_keys 文件中。
     /etc/ssh/moduli
             包含用於 DH-GEX 的 Diffie-Hellman groups 。文件的格式在 moduli(5) 手冊頁中描述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM