成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自定義構建交互式SSH應用程序,以Python為例

開發 后端 數據庫
SSH的使用模式分兩種方式交互式和非交互式的模式。在自動化系統中,更常用的是非交互式SSH,自動化工具都是基于這種模式,比如ansiable和salt-ssh,還有文件同步工具 rsync的SSH模式。本文我們就來說說交互式SSH應用的構建,并以Python為例實現了一個基本的交互式應用。

[[276121]]

SSH的使用模式分兩種方式交互式和非交互式的模式。在自動化系統中,更常用的是非交互式SSH,自動化工具都是基于這種模式,比如ansiable和salt-ssh,還有文件同步工具 rsync的SSH模式。本文我們就來說說交互式SSH應用的構建,并以Python為例實現了一個基本的交互式應用。

自定義構建交互式SSH應用程序,以Python為例

自定義shell

在服務器上,可以使用OpenSSH完成三個步驟來獲得shell:身份驗證,shell會話和命令。我們可以隨意配置shell(通過/etc/passwd)。例如,如果將用戶的登錄shell設置為/usr/bin/cshell,登陸后,就會運行cshell(可以為自定義的交互式程序)。shell定義也非常簡單,只需以root權限編輯/etc/passwd修改最后一個字段為自定義的shell程序既可。如果用戶通過分配的TTY(默認情況下已完成)連接到服務器,那就將能夠運行自定義的應用程序或交互式應用程序。

authorized_keys配置

需要注意的是,如果使用自定義的shell應用程序,無法接受用戶傳遞的額外命令行參數,例如ssh user@host ls -a執行時會丟掉最后的-a參數。為了解決這個問題,需要通過覆蓋運行的命令方式,為了實現覆蓋運行命令的操作,我們可以使用用戶證書驗證文件authorized_keys文件。在該文件每行之前,可以添加適用于使用該密鑰登錄的用戶的選項。這些選項中有一個選項是"command"選項。比如給將/home/user/.ssh/authorized_keys添加一下語句:

  1. command ="/usr/bin/Ccommand" ssh-rsa ... user 

用戶的shell(可能應該是/bin/sh)就可以自動運行nethack,無論配置何種command,(如果需要,都存儲在環境中的SSH_ORIGINAL_COMMAND中)都會先執行。出于安全原因,一般會設置一下限制配置:

  1. restrict,pty,command ="…" ssh-rsa ... user 

更詳細的設置選項,可以參考sshd官方手冊。默認會限制關閉大多數東西,通過pty顯式重新啟用TTY分配,這樣就可以做自定義自己的終端應用(比如Python下curses編寫的應用)。我們再來看一個典型的gitlab下典型的多用戶限制登陸型的authorized_keys配置實例:

自定義構建交互式SSH應用程序,以Python為例

sshd_config配置

另一個可以用來配置啟動命令的地方sshd配置文件:/etc/ssh/sshd_config。通過sshd_config的AuthorizedKeysCommand來配置額外執行命令。它設置執行任意程序,并從標準輸出stdout獲取authorized_keys文件。比如可以配置為:

  1. AuthorizedKeysCommand /usr/bin/Ccommand "%u" "%h" "%t" "%k" 
  2. AuthorizedKeysUser root 

上面配置中的格式字符串的作用是為命令提供嘗試登錄的用戶名(%u),用戶的主目錄(%h),正在使用的密鑰類型(%t,例如ssh-rsa)和用base64編碼的公鑰(%k)。這里提供的密鑰可用于識別用戶,可以將用戶公鑰存儲在數據庫中,通過應用查詢并提供給sshd用于認證。可以在此處嵌入自定義的命令行應用。

Python交互式SSH實例

下面是一個一個簡單的的AuthorizedKeysCommand和python實例:

自定義構建交互式SSH應用程序,以Python為例

上面腳本中buildrht-shell命令告訴用戶使用ssh builds@buildhost connect 之類的命令進行連接,可以使用SSH_ORIGINAL_COMMAND變量來獲取其命令行:

自定義構建交互式SSH應用程序,以Python為例

然后是身份驗證,檢查其密鑰和連接:

自定義構建交互式SSH應用程序,以Python為例

 

自定義構建交互式SSH應用程序,以Python為例

交互式SSH中最重要的是對的輸入命令進行實時的反饋。tail程序就是用來實現這個功能構建和打印日志給標準輸出:

自定義構建交互式SSH應用程序,以Python為例

以上我們就構建了一個自定義的個性化的交互式SSH應用實例。

總結

本文我們我們介紹了自定義構建交互式SSH應用的方法,并通過Python為例實現了一個簡單例子。拋磚引玉,自定義的交互式SSH應用在很多情況下都可以用來作為很有用的工具,比如可不可以對github的git ssh做一個擴展,把一些功能添加到過去,而不是簡單的一個信息提示:

  1. Hi bollwarm! You've successfully authenticated, but GitHub does not provide shell access 

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2024-07-25 08:58:16

GradioPython數據應用

2023-09-28 08:29:15

開源工具集語音識別

2013-12-11 10:41:00

jQuery插件

2019-01-03 09:06:55

Node.js命令行工具 前端

2016-11-29 12:25:56

Python大數據數據可視化

2025-02-25 10:40:00

圖像生成工具模型

2023-12-18 15:02:00

PyechartsPython數據可視化工具

2023-10-12 16:37:36

模型學習

2012-04-18 15:36:33

HTML5Canvas交互式

2023-06-27 13:46:20

2023-11-10 14:46:41

OpenAIPinecone

2011-09-01 15:54:10

app應用

2023-04-10 15:08:52

Plotly Das開發Web 應用程序

2024-06-26 12:17:48

深度學習GUI

2022-02-17 19:59:10

LED燈開發鴻蒙

2021-11-22 09:00:00

后端開發CMS

2024-08-02 10:30:39

StreamlitPython庫數據驅動

2021-10-27 16:03:43

Python編程語言代碼

2012-04-26 09:28:39

2010-02-24 09:39:25

Python交互式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品久久久久久久久久 | 99国产视频 | 亚洲网站在线观看 | 免费精品久久久久久中文字幕 | 午夜免费网站 | 久久婷婷国产麻豆91 | 日韩三片 | 日本精品一区二区三区视频 | 中文字幕亚洲一区二区三区 | 一色一黄视频 | 国产精品色婷婷久久58 | 国产乱码精品1区2区3区 | 在线91| 日韩精品久久 | 夜色www国产精品资源站 | 91在线观 | 黄色国产在线播放 | 午夜在线视频一区二区三区 | 在线观看中文字幕视频 | 久久久久网站 | 久久精品无码一区二区三区 | 一区二区国产在线观看 | 色婷婷亚洲国产女人的天堂 | 亚洲欧美精品一区 | 午夜影院操 | 在线播放国产视频 | 日本三级网站在线 | 欧美视频在线播放 | 国产成人综合在线 | 欧美一区二区三区视频 | 国产毛片久久久久久久久春天 | 91久久国产精品 | 国产精品1区 | 丁香婷婷成人 | 天天拍天天射 | 免费视频一区 | 亚洲人成一区二区三区性色 | 久久综合影院 | 日韩欧美在线一区 | 日韩三级在线 | 久久国产亚洲 |