自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

終端共享神器Tmate簡明教程

系統(tǒng) Linux
在 Unix/Linux 上工作,最常用的就是 Terminal。那么,如何將你的 Terminal 共享給別人一起協(xié)同工作(你幫助別人解決問題或者請別人幫助你解決問題)呢?很簡單,使用終端共享神器 tmate。

[[373763]]

 在 Unix/Linux 上工作,最常用的就是 Terminal。那么,如何將你的 Terminal 共享給別人一起協(xié)同工作(你幫助別人解決問題或者請別人幫助你解決問題)呢?很簡單,使用終端共享神器 tmate。

1. 剛性需求

絕大多數(shù)人都不是萬能的,總有需要他人現(xiàn)場指導(dǎo)或提供幫助的時候。那么,在無法面對面交談的時候(尤其是在新冠病毒肆虐的特殊時期),把你的終端 (Terminal) 共享出去,就可以實現(xiàn)即時且所見即所得的 1:1 協(xié)助。同樣地,基于 Terminal 的結(jié)對編程或 Code Review 也迫切需要終端共享。

2. 基本流程

2.1 安裝 tmate 

  1. $ sudo dnf install tmate # <<< Fedora  
  2. $ sudo yum install tmate # <<< CentOS  
  3. $ sudo apt install tmate # <<< Ubuntu 

2.2 啟動 tmate

假定 A 現(xiàn)在需要 B 的幫助,于是,A 在他的終端 (Terminal) 上鍵入: 

  1. A$ tmate 

然后就可以看到類似下圖的界面:

現(xiàn)在 A 通過即時通訊軟件(如 IRC)將  "ssh session:" 后面的那串消息 "ssh 3vRvL79HMtjmBetF37REVvU4z@sfo2.tmate.io" 發(fā)送給B,然后等待 B 的連接。

注意:如果 A 沒有 SSH key ,需要事先創(chuàng)建一個,命令如下:

  1. A$ ssh-keygen 

2.3 通過 ssh 進(jìn)行連接

B 在其終端輸入: 

  1. B$ ssh 3vRvL79HMtjmBetF37REVvU4z@sfo2.tmate.io 

然后 B 和 A 就共享了同一個 Terminal。無論是 A 還是 B 都可以操作該 Terminal。

2.4 關(guān)閉連接

A 在他的終端 (Terminal) 上鍵入 exit 即可。 

  1. A$ exit 

3. 基本原理

tmate 即 teammates,是 tmux 的一個分支,并且和 tmux 使用相同的配置信息 (i.e:tmate 可與 tmux 共享 ~/.tmux.conf )。**tmate 不僅是一個終端多路復(fù)用器,而且具有即時分享終端的能力。**它允許在單個屏幕中創(chuàng)建并操控多個終端,同時這些終端還能與其他人分享。總的來說,tmux 支持的窗口 (window) 和窗格 (pane) 功能,tmate 都支持。tmate 的基本工作原理如下:

  •  運(yùn)行 tmate 時,會在后臺創(chuàng)建一個連接到 tmate.io(由 tmate 開發(fā)者維護(hù)的后臺服務(wù)器)的 ssh 連接;
  •  tmate.io 服務(wù)器的 ssh 密鑰通過 DH 交換進(jìn)行校驗;
  •  客戶端通過本地 ssh 密鑰進(jìn)行認(rèn)證;
  •  連接創(chuàng)建后,本地 tmux 服務(wù)器會生成一個 150 位(不可猜測的隨機(jī)字符)會話令牌;
  •  隊友能通過用戶提供的 SSH 會話 ID 連接到 tmate.io。

4. 常見命令

4.1 顯示連接信息 

  1. $ tmate show-messages  
  2. Sat Feb 29 20:32:31 2020 [tmate] Connecting to master.tmate.io...  
  3. Sat Feb 29 20:32:37 2020 [tmate] Note: clear your terminal before sharing readonly access  
  4. Sat Feb 29 20:32:37 2020 [tmate] web session read only: https://tmate.io/t/ro-59nhrEMMpr8fvYEfW3LbU69r9  
  5. Sat Feb 29 20:32:37 2020 [tmate] ssh session read only: ssh ro-59nhrEMMpr8fvYEfW3LbU69r9@nyc1.tmate.io  
  6. Sat Feb 29 20:32:37 2020 [tmate] web session: https://tmate.io/t/2VFPtcBNnhaNRGWmKgKZH3zfn  
  7. Sat Feb 29 20:32:37 2020 [tmate] ssh session: ssh 2VFPtcBNnhaNRGWmKgKZH3zfn@nyc1.tmate.io 

4.2 分離/接入/查看

  •  指定 socket 文件啟動 
  1. $ tmate -S /tmp/foo.sock 
  •  分離 
  1. $ tmate detach 
  •  接入 
  1. $ tmate -S /tmp/foo.sock attach 
  •  查看 
  1. $ tmate -S /tmp/foo.sock ls  
  2. 0: 2 windows (created Sat Feb 29 20:40:02 2020) [144x35] 
  •  關(guān)閉會話 
  1. $ tmate -S /tmp/foo.sock kill-session 

5. 更多連接方式

tmate 支持 4 種連接方式,ssh、ssh-ro、web 和 web-ro。其中,ssh、web 支持讀寫訪問,ssh-ro、web-ro 支持只讀訪問。下面就是 web 只讀訪問方式的截圖。

注意: tmate 啟動之后,過幾分鐘后再執(zhí)行 tmate show-messages 就會失效,那么需要重新獲取連接信息的話,可以使用下面的腳本: 

  1.  1 #!/bin/bash  
  2.  2   
  3.  3 function usage  
  4.  4 {  
  5.  5         echo "Usage: $1 <sock> [sshrw|webrw|sshro|webro]" >&2  
  6.  6 }  
  7.  7   
  8.  8 tmate_sock=$1  
  9.  9 msg_type=${2:-"sshrw"}  
  10. 10 [[ -z $tmate_sock ]] && usage $0 && exit 1  
  11. 11   
  12. 12 case $msg_type in  
  13. 13         "sshrw") tmate -S $tmate_sock display -p '#{tmate_ssh}'    ;;  
  14. 14         "sshro") tmate -S $tmate_sock display -p '#{tmate_ssh_ro}' ;;  
  15. 15         "webrw") tmate -S $tmate_sock display -p '#{tmate_web}'    ;;  
  16. 16         "webro") tmate -S $tmate_sock display -p '#{tmate_web_ro}' ;;  
  17. 17         *) usage $0; exit 1; ;;  
  18. 18 esac  
  19. 19 exit $? 

例如: 

  1. $ ./foo.sh /tmp/foo.sock sshrw  
  2. ssh JHELdz9a3EvTcL5w5beVMvwde@sfo2.tmate.io  
  3. $ ./foo.sh /tmp/foo.sock sshro 
  4. ssh ro-Nv7fk2YT3urVEAEFCSexx7XHw@sfo2.tmate.io  
  5. $ ./foo.sh /tmp/foo.sock webrw  
  6. https://tmate.io/t/JHELdz9a3EvTcL5w5beVMvwde  
  7. $ ./foo.sh /tmp/foo.sock webro  
  8. https://tmate.io/t/ro-Nv7fk2YT3urVEAEFCSexx7XHw 

新版本的 Tmate,可以用 tmate -F 隨時顯示相關(guān)連接信息。

6.訪問控制

通常情況下,鑒于 tmate 生成的共享鏈接(ssh or web)在提供給他人訪問的時候無需任何安全驗證,而且此連接存儲在 tmate.io 的服務(wù)器上,所以在使用此功能的時候請保持謹(jǐn)慎。

  •  第一,只把共享鏈接發(fā)送給你所信任的人知曉;
  •  第二,如無必要,請僅僅發(fā)送只讀鏈接;
  •  第三,一旦共享結(jié)束,請及時關(guān)閉會話。

那么,如何實現(xiàn)訪問控制呢?

  •  將你所信任的人 B 的公鑰加入到你 (A) 的 ~/.ssh/authorized_keys 文件中,
  •  啟動 tmate 使用如下命令:
  1. A$ tmate -a ~/.ssh/authorized_keys 

這樣,只有B才能通過 ssh 訪問你的共享鏈接。陌生人 C 的公鑰沒有保存到 A 的 ~/.ssh/authorized_keys 文件中,于是會出現(xiàn)如下類似的拒絕訪問信息。 

  1. C$ ssh ERayHQKUPZkhtVufjjFTvtfjC@sgp1.tmate.io  
  2. ERayHQKUPZkhtVufjjFTvtfjC@sgp1.tmate.io: Permission denied (publickey). 

有關(guān)訪問控制的更多內(nèi)容,請訪問 https://tmate.io/ 的 Access control 一節(jié)。

特別提示: 一旦使用了基于文件  authorized_keys 的訪問控制,就不能使用基于 web 的連接方式,也就是說,只能使用 ssh 進(jìn)行連接。

7. 參考資料

  1.  Tmate – Share Your Terminal Instantly To Anyone From Anywhere
  2.  tmate: Instantly Share Terminal Session With Other Linux Users
  3.  tmate – To share your terminal session instantly with anyone in few seconds
  4.  tmate:秒級分享你的終端會話 

 

責(zé)任編輯:龐桂玉 來源: 奇妙的Linux世界
相關(guān)推薦

2013-12-03 13:05:30

Lua腳本語言

2014-06-20 10:51:35

Linux LVM邏輯卷

2011-06-03 08:49:54

Java

2023-10-20 14:08:35

digDNS

2010-05-26 10:42:20

SVN1.5配置

2023-11-02 14:26:30

PyTorch機(jī)器學(xué)習(xí)

2023-11-02 14:30:25

機(jī)器學(xué)習(xí)

2009-08-06 17:45:08

C# Webservi

2010-12-15 12:48:26

VirtualBox

2009-09-02 17:38:19

C#開發(fā)GIS

2021-05-08 09:02:48

KubeBuilderOperatork8s

2011-08-17 09:55:45

Objective-CCategory

2010-05-25 16:11:25

Git-SVN

2011-08-17 10:00:12

Objective-CProperty

2021-05-11 09:31:31

kustomizeoperator kubernetes

2010-01-26 08:25:06

F#語法F#教程

2009-07-03 13:45:48

JSP簡明教程組件為中心

2021-03-03 12:55:30

Python列表推導(dǎo)式代碼

2022-06-19 14:13:29

tmateLinux

2009-08-08 16:46:39

點贊
收藏

51CTO技術(shù)棧公眾號