Linux下設定wetty不需要登入可進行命令列操作

來源:互聯網
上載者:User

Linux系統下wetty安裝和使用說明

1. Wetty簡介

Wetty是使用Node.js和websockets開發的一個開源Web-based SSH。關於Web-based SSH的更多資料請參考https://en.wikipedia.org/wiki/Web-based_SSH。

而wetty的資料請參考https://github.com/krishnasrinivas/wetty。


2. 環境準備

因為wetty是使用Node.js編寫的,所以我們要事先安裝好相關的Node.js環境。


3. Wetty安裝

運行下面命令進行安裝,

 $ git clone https://github.com/krishnasrinivas/wetty
 $ cd wetty
 $ sudo npm install

安裝過程可能會出錯,請參考下面的可能問題處理。


4. 驗證

安裝完成之後,然後運行下面命令啟動wetty服務,監聽3000連接埠號碼,

$ node app.js -p 3000



然後開啟瀏覽器,輸入http://127.0.0.1:3000,然後輸入密碼登陸成功後便可以進行命令列操作了,效果如下圖所示,


5. 可能問題處理


5.1安裝時報error: 'Use' is not a member of 'node::Buffer'

因為我安裝的Node是4.1.1版本的,太新了。而wetty原本依賴的pty.js太老,導致編譯出現的問題。修改以下wetty原始碼目錄下的package.json,將依賴的pty.js修改成最新版本0.3.0(原本是^0.2.7-1)。儲存檔案,然後重新運行sudo npm install命令即可。

 
5.2 ssh訪問失敗

啟動wetty服務後,在瀏覽器中輸入http://127.0.0.1:3000時報一個類似於下面截圖的”ssh: connect to host localhost port 22: Connection refused”的錯誤。

運行以下下面的命令重新安裝openssl-client和openssl-server即可,

$ sudo apt-get remove openssh-client openssh-server
$ sudo apt-get installopenssh-client openssh-server


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

上面我們學習了Linux怎麼安裝部署Wetty服務,但是我們看到,在瀏覽器中輸入http://127.0.0.1:3000進行訪問的時候,還需要我們輸入帳號密碼進行認證(如下圖第一行所示)。



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

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


從上圖的這些選項中看到wetty是通過ssh來進行終端操作的,而其中的--sshauth用於指定ssh的認證模式,其預設為password,表示通過帳號密碼方式進行認證。關於ssh和ssh的認證模式我們可以參考下面幾個文檔。

  (1)阮一峰的博文:SSH原理與運用(一):遠程登入;

  (2)https://en.wikipedia.org/wiki/Secure_Shell

  (3)Linux / Unix Command: ssh

  (4)Linux / Unix Command: ssh_config

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即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.