首頁 > 軟體

設定Wetty不需要賬號登入便可進行命令列操作

2020-06-16 17:51:40

前一篇隨筆我們講了Linux怎麼安裝部署Wetty服務,但是我們看到,在瀏覽器中輸入http://127.0.0.1:3000進行存取的時候,還需要我們輸入賬號密碼進行認證(如下圖第一行所示)。

但在某些應用場景下,我們不需要使用者輸入賬號密碼進行認證,而且使用者也不一定知道賬號密碼。我們希望使用者開啟即可直接進行命令操作。

在命令列終端中輸入node app.js會如下提示,其中列出了啟動wetty服務的所有選項說明。

從上圖的這些選項中看到wetty是通過ssh來進行終端操作的,而其中的--sshauth用於指定ssh的認證模式,其預設為password,表示通過賬號密碼方式進行認證。

Ssh的認證方式有很四種:hostbased、publickey、keyboard-interactive、password。其中password即我們上面說的賬號密碼認證方式;publickey是RSA公鑰認證方式;其它兩個我們暫時不關心。

Wetty預設採用的是password認證方式,我們可以通過--sshauth選項指定為publickey認證方式即可。關於ssh公鑰的認證機制是:

使用者將自己的公鑰儲存在遠端主機上。登入的時候,遠端主機會向使用者傳送一段隨機字串,使用者用自己的私鑰加密後,再發回來。遠端主機用事先儲存的公鑰進行解密,如果成功,就證明使用者是可信的,直接允許登入shell,不再要求密碼。

那麼我們需要先開啟一個命令列終端,然後輸入

$ ssh-keygen

來生成我們的公鑰和私鑰。

該命令生成的公鑰和金鑰預設都儲存在~/.ssh目錄下,

其中id_rsa檔案中儲存的是私鑰,id_rsa.pub檔案中儲存的是公鑰。

上面ssh公鑰認證機制提供我們需要講公鑰儲存到遠端機器中,儲存在登入後的使用者主目錄的~/.ssh/authorized_keys檔案中。公鑰就是一段字串,只要把它追加在authorized_keys檔案的末尾就行了。而此時我們的遠端機器即是本地機器,於是我們只需要將~/.ssh/id_rsa.pub複製一份並命名為authorized_keys即可。

$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

然後我們切換到wetty目錄下,啟動wetty服務,

$ node app.js -p 3000 --sshauth=publickey

然後在瀏覽器中輸入http://127.0.0.1:3000/,可以看到此時不需要輸入賬號密碼即可直接操作,如下圖所示,

如果我們嫌每次啟動的時候還要指定--sshauth選項太麻煩的話,我們可以直接修改app.js檔案中原始碼。開啟app.js檔案,我們可以看到其在第45行指定的sshauth的預設認證方式為password,我們只需要將其修改為publickey即可。

(done)

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-10/123975.htm 


IT145.com E-mail:sddin#qq.com