您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關終端共享神器Tmate怎么用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
在 Unix/Linux 上工作,最常用的就是 Terminal。那么,如何將你的 Terminal 共享給別人一起協同工作(你幫助別人解決問題或者請別人幫助你解決問題)呢?很簡單,使用終端共享神器 tmate。
1. 剛性需求
絕大多數人都不是萬能的,總有需要他人現場指導或提供幫助的時候。那么,在無法面對面交談的時候(尤其是在新冠病毒肆虐的特殊時期),把你的終端 (Terminal) 共享出去,就可以實現即時且所見即所得的 1:1 協助。同樣地,基于 Terminal 的結對編程或 Code Review 也迫切需要終端共享。
2. 基本流程
2.1 安裝 tmate
$ sudo dnf install tmate # <<< Fedora $ sudo yum install tmate # <<< CentOS $ sudo apt install tmate # <<< Ubuntu
2.2 啟動 tmate
假定 A 現在需要 B 的幫助,于是,A 在他的終端 (Terminal) 上鍵入:
A$ tmate
然后就可以看到類似下圖的界面:
現在 A 通過即時通訊軟件(如 IRC)將 "ssh session:" 后面的那串消息 "ssh 3vRvL79HMtjmBetF37REVvU4z@sfo2.tmate.io" 發送給B,然后等待 B 的連接。
注意:如果 A 沒有 SSH key ,需要事先創建一個,命令如下:
A$ ssh-keygen
2.3 通過 ssh 進行連接
B 在其終端輸入:
B$ ssh 3vRvL79HMtjmBetF37REVvU4z@sfo2.tmate.io
然后 B 和 A 就共享了同一個 Terminal。無論是 A 還是 B 都可以操作該 Terminal。
2.4 關閉連接
A 在他的終端 (Terminal) 上鍵入 exit 即可。
A$ exit
3. 基本原理
tmate 即 teammates,是 tmux 的一個分支,并且和 tmux 使用相同的配置信息 (i.e:tmate 可與 tmux 共享 ~/.tmux.conf )。**tmate 不僅是一個終端多路復用器,而且具有即時分享終端的能力。**它允許在單個屏幕中創建并操控多個終端,同時這些終端還能與其他人分享。總的來說,tmux 支持的窗口 (window) 和窗格 (pane) 功能,tmate 都支持。tmate 的基本工作原理如下:
運行 tmate 時,會在后臺創建一個連接到 tmate.io(由 tmate 開發者維護的后臺服務器)的 ssh 連接;
tmate.io 服務器的 ssh 密鑰通過 DH 交換進行校驗;
客戶端通過本地 ssh 密鑰進行認證;
連接創建后,本地 tmux 服務器會生成一個 150 位(不可猜測的隨機字符)會話令牌;
隊友能通過用戶提供的 SSH 會話 ID 連接到 tmate.io。
4. 常見命令
4.1 顯示連接信息
$ tmate show-messages Sat Feb 29 20:32:31 2020 [tmate] Connecting to master.tmate.io... Sat Feb 29 20:32:37 2020 [tmate] Note: clear your terminal before sharing readonly access Sat Feb 29 20:32:37 2020 [tmate] web session read only: https://tmate.io/t/ro-59nhrEMMpr8fvYEfW3LbU69r9 Sat Feb 29 20:32:37 2020 [tmate] ssh session read only: ssh ro-59nhrEMMpr8fvYEfW3LbU69r9@nyc1.tmate.io Sat Feb 29 20:32:37 2020 [tmate] web session: https://tmate.io/t/2VFPtcBNnhaNRGWmKgKZH3zfn Sat Feb 29 20:32:37 2020 [tmate] ssh session: ssh 2VFPtcBNnhaNRGWmKgKZH3zfn@nyc1.tmate.io
4.2 分離/接入/查看
指定 socket 文件啟動
$ tmate -S /tmp/foo.sock
分離
$ tmate detach
接入
$ tmate -S /tmp/foo.sock attach
查看
$ tmate -S /tmp/foo.sock ls 0: 2 windows (created Sat Feb 29 20:40:02 2020) [144x35]
關閉會話
$ tmate -S /tmp/foo.sock kill-session
5. 更多連接方式
tmate 支持 4 種連接方式,ssh、ssh-ro、web 和 web-ro。其中,ssh、web 支持讀寫訪問,ssh-ro、web-ro 支持只讀訪問。下面就是 web 只讀訪問方式的截圖。
注意: tmate 啟動之后,過幾分鐘后再執行 tmate show-messages 就會失效,那么需要重新獲取連接信息的話,可以使用下面的腳本:
1 #!/bin/bash 2 3 function usage 4 { 5 echo "Usage: $1 <sock> [sshrw|webrw|sshro|webro]" >&2 6 } 7 8 tmate_sock=$1 9 msg_type=${2:-"sshrw"} 10 [[ -z $tmate_sock ]] && usage $0 && exit 1 11 12 case $msg_type in 13 "sshrw") tmate -S $tmate_sock display -p '#{tmate_ssh}' ;; 14 "sshro") tmate -S $tmate_sock display -p '#{tmate_ssh_ro}' ;; 15 "webrw") tmate -S $tmate_sock display -p '#{tmate_web}' ;; 16 "webro") tmate -S $tmate_sock display -p '#{tmate_web_ro}' ;; 17 *) usage $0; exit 1; ;; 18 esac 19 exit $?
例如:
$ ./foo.sh /tmp/foo.sock sshrw ssh JHELdz9a3EvTcL5w5beVMvwde@sfo2.tmate.io $ ./foo.sh /tmp/foo.sock sshro ssh ro-Nv7fk2YT3urVEAEFCSexx7XHw@sfo2.tmate.io $ ./foo.sh /tmp/foo.sock webrw https://tmate.io/t/JHELdz9a3EvTcL5w5beVMvwde $ ./foo.sh /tmp/foo.sock webro https://tmate.io/t/ro-Nv7fk2YT3urVEAEFCSexx7XHw
新版本的 Tmate,可以用 tmate -F 隨時顯示相關連接信息。
6.訪問控制
通常情況下,鑒于 tmate 生成的共享鏈接(ssh or web)在提供給他人訪問的時候無需任何安全驗證,而且此連接存儲在 tmate.io 的服務器上,所以在使用此功能的時候請保持謹慎。
第一,只把共享鏈接發送給你所信任的人知曉;
第二,如無必要,請僅僅發送只讀鏈接;
第三,一旦共享結束,請及時關閉會話。
那么,如何實現訪問控制呢?
將你所信任的人 B 的公鑰加入到你 (A) 的 ~/.ssh/authorized_keys 文件中,
啟動 tmate 使用如下命令:
A$ tmate -a ~/.ssh/authorized_keys
這樣,只有B才能通過 ssh 訪問你的共享鏈接。陌生人 C 的公鑰沒有保存到 A 的 ~/.ssh/authorized_keys 文件中,于是會出現如下類似的拒絕訪問信息。
C$ ssh ERayHQKUPZkhtVufjjFTvtfjC@sgp1.tmate.io ERayHQKUPZkhtVufjjFTvtfjC@sgp1.tmate.io: Permission denied (publickey).
有關訪問控制的更多內容,請訪問 https://tmate.io/ 的 Access control 一節。
特別提示: 一旦使用了基于文件 authorized_keys 的訪問控制,就不能使用基于 web 的連接方式,也就是說,只能使用 ssh 進行連接。
以上就是終端共享神器Tmate怎么用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。