有時,用戶可能需要知道其口令是什么。如果用戶需要使用Sudo程序,就需要通過口令進(jìn)行身份驗證。理想情況下,這種信息是通過電話或者加密的電子郵件提供的,不過這個口令自身有時會通過明文或者純文本的電子郵件提供。
理想的情況是創(chuàng)建用戶賬戶,獲得用戶的SSH公鑰,并為用戶創(chuàng)建一個隨機(jī)口令,用戶登錄之后立即修改這個口令。這些都很容易完成。
對于用戶,這是相當(dāng)簡單的。要創(chuàng)建一對公/私鑰,只需執(zhí)行:
$ ssh-keygen -t dsa
你還應(yīng)該讓用戶發(fā)送~/.ssh/id_dsa.pub文件。在服務(wù)器端,事情也并不太困難。首先,你要創(chuàng)建用戶賬戶:
# useradd -c "Joe User" -s /bin/bash -m joe
# openssl rand -base64 6 | tee -a ~joe/.password | passwd -stdin joe
這就創(chuàng)建了一個用戶joe,并且為它分配了一個隨機(jī)口令,并將同樣的口令存儲在~joe/.password中,在這里joe可以看到其口令。
如果你通過/etc/ssh/sshd_config鎖定了賬戶,一定要記住增加下面的命令,來允許joe訪問系統(tǒng):
AllowUsers joe
此外,還要將PasswordAuthentication設(shè)為no,強(qiáng)制所有的登錄都要使用公鑰。
最后,一定要將id_dsa.pub密鑰復(fù)制到用戶的主目錄中,并且分配適當(dāng)?shù)乃袡?quán)和權(quán)限:
# mkdir ~joe/.ssh
# chmod 700 ~joe/.ssh
# cp id_dsa.pub ~joe/.ssh/authorized_keys
# chmod 600 ~joe/.ssh/authorized_keys
# chown -R joe:joe ~joe/.ssh
好了,全部搞定。現(xiàn)在用戶可以使用其SSH私鑰來登錄,而且能夠訪問Sudo或者需要一個實際的口令來進(jìn)行身份驗證。