如果你需要建立一個用戶賬戶,使其可對系統外殼進行訪問,那麼對登錄工具的唯一邏輯選擇就是OpenSSH。你所需要的只是用戶的公鑰(public key),用戶只需要你的IP地址或者是主機名(用戶需要靠此登錄)。通常情況下,這就足夠了。
有時,用戶可能需要知道其口令是什麼。如果用戶需要使用Sudo程序,就需要通過口令進行身份驗證。理想情況下,這種信息是通過電話或者加密的電子郵件提供的,不過這個口令自身有時會通過明文或者純文本的電子郵件提供。
理想的情況是創建用戶賬戶,獲得用戶的SSH公鑰,並為用戶創建一個隨機口令,用戶登錄之後立即修改這個口令。這些都很容易完成。
對於用戶,這是相當簡單的。要創建一對公/私鑰,只需執行:
$ ssh-keygen -t dsa
你還應該讓用戶發送~/.ssh/id_dsa.pub文件。在服務器端,事情也並不太困難。首先,你要創建用戶賬戶:
# useradd -c "Joe User" -s /bin/bash -m joe
# openssl rand -base64 6 | tee -a ~joe/.password | passwd -stdin joe
這就創建了一個用戶joe,並且為它分配了一個隨機口令,並將同樣的口令存儲在~joe/.password中,在這裡joe可以看到其口令。
如果你通過/etc/ssh/sshd_config鎖定了賬戶,一定要記住增加下面的命令,來允許joe訪問系統:
AllowUsers joe
此外,還要將PasswordAuthentication設為no,強制所有的登錄都要使用公鑰。
最後,一定要將id_dsa.pub密鑰復制到用戶的主目錄中,並且分配適當的所有權和權限:
# 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
好了,全部搞定。現在用戶可以使用其SSH私鑰來登錄,而且能夠訪問Sudo或者需要一個實際的口令來進行身份驗證。