工作第一步建立連接——ssh

照本宣科

SSH(Secure Shell,安全外殼協議)是一種用于在不安全網絡上進行安全遠程登錄和實現其他安全網絡服務的協議.功能主要是遠程登陸和文件傳輸(使用scp)

為了建立 SSH 遠程連接,需要兩個組件:客戶端和相應服務端組件,SSH 客戶端是我們安裝在本地電腦的軟件;而服務端,也需有一個稱為 SSH 守護程序的組件,它不斷地偵聽特定的 TCP/IP 端口以獲取可能的客戶端連接請求。 一旦客戶端發起連接,SSH 守護進程將以軟件和它支持的協議版本作為響應,兩者將交換它們的標識數據。如果提供的憑據正確,SSH 會為適當的環境創建一個新會話。

MacOS 系統自帶 SSH 客戶端,可以直接使用,Windows 系統需要安裝 Xshell 客戶端軟件,大部分 Linux 發行版系統都自帶 SSH 客戶端,可以直接使用,可通過 ssh -V 命令查看當前系統是否有 SSH 客戶端。

原理

本地向遠程服務端發起連接 服務端隨機生成一個字符串發送給發起登錄的本地端 本地對該字符串使用私鑰(~/.ssh/id_rsa)加密發送給服務端 服務端使用公鑰(~/.ssh/id_rsa.pub)對私鑰加密后的字符串進行解密 服務端對比解密后的字符串和第一次發送給客戶端未加密的字符串,若一致則判斷為登錄成功

開始連接

給出的例子是ssh hello@microsoft.com -A,-A的作用是開啟認證代理連接轉發功能,-a則表示禁用。轉發的對象是端口號,這樣本地就可以使用服務器的服務,或者服務器使用本地的一些服務。

使用命令行的登陸需要每次輸入賬號和ip比較麻煩,所以可以使用配置文件一次性寫好。以vscode中的新建ssh連接為例,安裝好插件Remote-SSH,對SSH配置文件進行更新。配置文件有兩種:

/etc/ssh/ssh.conf和~/.ssh/config分別是系統級別和用戶級別的配置,配置方法完全一致,一般只會配置~/.ssh/config文件,配置說明。

Host T4# 目標機的ip地址HostName xxx.xxx.xxx.xxx# 你目標機的用戶名User username# 目標機登錄端口Port 22

配置好之后就可以一鍵直連。

密鑰

ssh還可以用來登陸git,生成key來免密碼登陸git,

ssh-keygen -t rsa -C "codeideaai@gmail.com" -f "codeideaaigmailgithub"
    • -t rsa:指定密鑰類型為 RSA。之外還有ed25519類型的
    • -C "codeideaai@gmail.com":為密鑰添加注釋,通常使用郵箱地址作為標識。
    • -f "codeideaaigmailgithub":指定生成的公鑰和密鑰文件的名稱。
    • 使用SSH-keygen生成GitHub密鑰教程_ssh-keygen -t rsa -c-CSDN博客

    結果生成密鑰對。會在 ~/.ssh 生成兩個文件:

    • codeideaaigmailgithub:私鑰文件,需要妥善保管,不要泄露。
    • codeideaaigmailgithub.pub:公鑰文件,可以公開分享,用于添加到 GitHub 或其他需要 SSH 認證的服務中。

    高級配置

    高級體現在兩點,一點是在服務器新建賬號,一點是使用私鑰公鑰。

    新建root賬號,避免用戶之間互相影響。

    sudo adduser youraccount
    sudo usermod -aG sudo youraccount

    上面的配置文件雖然方便,但是還是需要每次輸入密碼。另外一種選擇就是通過密鑰進行認證,和github的認證一樣。這里的username就是剛剛新建的root賬號。

    Host T4# 目標機的ip地址HostName xxx.xxx.xxx.xxx# 你目標機的用戶名User username# 目標機登錄端口Port 22
    IdentityFile ~/.ssh/id_ed25519  # 私鑰路徑
    IdentitiesOnly yes  # 強制使用指定密鑰

    生成密鑰之后,復制公鑰存放在新建的root賬號路徑下:/home/xxxxx/.ssh/authorized_keys

    權限設置:

    chmod 700 /home/xxxx/.ssh
    chmod 600 /home/xxxx/.ssh/authorized_keys
    chown -R xxxx:xxxx ~xxxx/.ssh

    登陸服務器后,就可以安裝annaconda,安裝虛擬環境,從git上面clone代碼。clone也需要sudo ssh-keygen -t rsa生成密鑰對,會存放在/home/xxx/.ssh/id_rsa 中。

    為了從其他服務器scp拷貝,需要把其他服務器的公鑰也追加放入authorized_keys,在新服務器上操作:

    echo "ssh-ed25519 AAAAC3NzaC1... user@client1" >> ~/.ssh/authorized_keys

    安裝conda:

    wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh
    bash Anaconda3-5.3.0-Linux-x86_64.sh
    最后配置環境變量
    sudo vim ~/.bashrc
    # 添加環境變量 ${USER} 用戶名
    export PATH=/home/${USER}/anaconda3/bin:$PATH
    source ~/.bashrcsource  activate
    conda --versionconda create -n 環境名 python=3.12

    添加源:

    Conda換源_conda換清華源-CSDN博客

    debug

    調試可以加斷點也可以打印log,但個人還是習慣打斷點。在vscode中,安裝了python debugger插件就可以實現打斷點。難點在于launch.json的配置。本來vscode會自動生成一份文件,但是調試中斷,這是文心一言加工后的:

    {"version": "0.2.0","configurations": [{"name": "Python: 當前文件 (Conda)","type": "python",  // 確保已安裝 VS Code Python 擴展"request": "launch","program": "${file}","python": "${command:python.interpreterPath}",  // 自動獲取當前選中的解釋器"console": "integratedTerminal","justMyCode": true,  // 跳過庫代碼調試"cwd": "${workspaceFolder}",  // 工作目錄"env": {"PYTHONPATH": "${workspaceFolder}",  // 可選:添加項目根目錄到 PYTHONPATH"WANDB_MODE": "offline"  // 可選:調試時禁用 wandb 在線同步},"args": []  // 可選:命令行參數,如 ["--arg1", "value1"]},{"name": "Python: 模塊調試","type": "python","request": "launch","module": "your_module_name",  // 替換為你的模塊名(如 `train`)"python": "${command:python.interpreterPath}","console": "integratedTerminal"}]
    }

    reference:

    1.Linux ssh 基礎教程 - 我是唐青楓 - 博客園

    2.https://zhuanlan.zhihu.com/p/614176659

    3.pycharm EAP 構建出錯_pycharm eap build expired-CSDN博客

    4.SSH遠程連接時報錯提示Permission denied (publickey).的解決方法 - 角刀牛Java - 博客園

    5.SSH公私鑰免密連接遠程服務器_ssh連接服務器 公私鑰-CSDN博客

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/bicheng/89285.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89285.shtml
    英文地址,請注明出處:http://en.pswp.cn/bicheng/89285.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    Markdown變身Word,解鎖格式轉換新姿勢

    目錄一、引言二、在線轉換工具使用法2.1 工具推薦2.2 操作步驟2.3 優缺點分析三、文本編輯器的內置功能或插件3.1 適用編輯器列舉3.2 以 Visual Studio Code 為例的操作流程3.3 優勢說明四、使用專門的轉換軟件4.1 Pandoc 軟件介紹4.2 安裝步驟4.3 命令行轉換操作五、編程腳本實…

    MR 處于 WIP 狀態的WIP是什么

    WIP是什么 在MR(Merge Request 或代碼合并請求)中,WIP 是"Work In Progress" 的縮寫,意思是“正在進行中”或“在制品”。當一個MR 被標記為WIP,通常表示它尚未準備好被合并,可能還在開發中&…

    機器學習-線性回歸模型和梯度算法

    1. 線性回歸模型1.1 線性回歸模型線性回歸模型:將數據擬合成一條直線。作用:預測數字作為輸出。例子:房子的大小與房價的估計(圖表)(數據表)1.2 訓練集訓練集:用于訓練模型的數據集訓…

    時序預測 | Matlab代碼實現VMD-TCN-GRU-MATT變分模態分解時間卷積門控循環單元多頭注意力多變量時序預測

    預測效果代碼功能 代碼主要功能 該代碼實現了一個變分模態分解時間卷積門控循環單元多頭注意力多變量時間序列預測模型,核心功能為: 使用VMD(變分模態分解)將原始信號分解為多個IMF分量對每個IMF分量構建TCN-GRU-MATT混合神經網絡…

    HTML5 離線存儲

    HTML5 離線存儲(通常指 Application Cache)是早期用于實現 Web 應用離線訪問的技術,但由于其設計缺陷已被廢棄。現代 Web 開發中,取而代之的是更強大的 Service Worker Cache API 方案(屬于 Progressive Web Apps 技術…

    JavaScript 性能優化實戰:深入性能瓶頸,精煉優化技巧與最佳實踐

    前言 現代前端開發,不僅要“能跑”,更要“跑得快”。在用戶體驗為王的時代,JavaScript 性能優化已經成為前端工程師的必修課。 為什么要關注 JavaScript 性能 加載緩慢 → 用戶流失卡頓滯后 → 交互體驗崩潰資源浪費 → 設備電量與內存被吞…

    文心4.5開源背后的戰略棋局:百度為何選擇All in開放?

    文章目錄引言:一場顛覆AI行業格局的孤注國內開源模型的崛起與威脅國際競爭格局的重塑1.技術維度:開源是突破模型性能瓶頸的“加速器”1.1 閉源模型的“內卷化”困境1.2 文心4.5的開源技術架構:從“黑箱”到“樂高”1.2.1文心4.5的技術創新1.2…

    SAP學習筆記 - 開發46 - RAP開發 Managed App Metadata Extension 2 - Booking_M,BookSuppl_M

    上一章講了 RAP開發中,New Service Definition,Metadata Extension,在Metadata 文件中 復習了 lineItem,selectionField,Search,ObjectModel,Value Help,headerInfo 等內容。 SAP學…

    # Win11開機卡死?無法進入登錄界面?3招強制進安全模式,快速修復系統

    Win11開機卡死?無法進入登錄界面?3招強制進安全模式,快速修復系統一、問題描述: 當你的win11電腦開機后卡在圖片界面就死機,無法進入登錄界面,不顯示windows徽標,不能正常啟動,可能的…

    快捷支付與網關支付:兩種主流支付方式的深度解析

    在當今數字化支付時代,快捷支付和網關支付作為兩種主流的電子支付方式,為消費者和商家提供了多樣化的支付選擇。本文將深入探討這兩種支付方式的區別、適用場景及各自的優劣勢,幫助您更好地理解現代支付生態。一、快捷支付:便捷高…

    【WRFDA數據教程第一期】LITTLE_R 格式詳細介紹

    目錄LITTLE_R 格式概述LITTLE_R 的結構1-Header Record 詳解:觀測的“身份證”2-Data Record:觀測數據本體3-Ending Record:終止標志4-Tail Integers:尾部校驗字段另-Missing Values(缺測值處理)Mandatory,…

    一文讀懂循環神經網絡—從零實現長短期記憶網絡(LSTM)

    目錄 一、遺忘門(Forget Gate):決定 “該忘記什么” 二、輸入門(Input Gate):決定 “該記住什么新信息” 三、輸出門(Output Gate):決定 “該輸出什么” 四、候選記憶…

    FreeRTOS之鏈表關鍵數據結構和函數操作接口-1

    FreeRTOS之鏈表操作相關接口1 FreeRTOS源碼下載地址2 任務控制塊TCB2.1 任務控制塊TCB2.1.1 任務控制塊的關鍵成員2.1.2 TCB 的核心作用2.2 ListItem_t2.3 List_t3 函數接口3.1 vListInitialise3.2 vListInitialiseItem1 FreeRTOS源碼下載地址 https://www.freertos.org/ 2 …

    OpenVela之 Arch Timer 驅動框架使用指南

    一、概述 在嵌入式系統開發中,定時器是實現任務調度、精確延時等功能的核心組件。Arch Timer 作為基于 Timer Driver 實現的間隔定時器,在系統調度中扮演著重要角色。本文將全面介紹 Arch Timer 驅動框架,從基本概念到實際應用,幫…

    AAC編解碼

    AAC(Advanced Audio Coding,高級音頻編碼)是一種基于心理聲學原理的有損音頻編解碼技術,廣泛應用于流媒體、數字廣播、移動音頻等場景。其編解碼流程圍繞 “保留人耳可感知信息、去除冗余” 設計,分為編碼(…

    STM32 | HC-SR04 超聲波傳感器測距

    模塊:HC-SR04感應角度:不大于15度 探測距離:2cm-450cm 高精度:可達0.3cmTrig:觸發信號,接收MCU發送的控制脈沖,MCU對應GPIO 設置為輸出Echo:反饋信號,向MCU發送數據…

    【RTSP從零實踐】12、TCP傳輸H264格式RTP包(RTP_over_TCP)的RTSP服務器(附帶源碼)

    😁博客主頁😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客內容🤑:🍭嵌入式開發、Linux、C語言、C、數據結構、音視頻🍭 🤣本文內容🤣&a…

    【unitrix】 6.1 類型化整數特征(t_int.rs)

    一、源碼 這段代碼定義了一個 Rust 特征(trait)TInt 和一些實現,用于表示類型化的整數。 use crate::number::{Null, B, Bit, TNumber};/// 類型化整數標記特征 /// /// 要求: /// - 實現 TNumber /// - 可復制 (Copy) /// - 默認…

    速通LVS

    一、LVS的使用lvs部署命令介紹lvs軟件相關信息:程序包:ipvsadm Unit File: ipvsadm.service 主程序:/usr/sbin/ipvsadm 規則保存工具:/usr/sbin/ipvsadm-save 規則重載工具:/usr/sbin/ipvsadm-restore 配置文件&#x…

    Nginx,MD5和Knife4j

    一、 Nginx: 項目網關與流量調度核心原理反向代理 (Reverse Proxy):在Web架構中,Nginx作為系統的統一入口(API網關),接收所有外部客戶端請求。它通過解析請求的URL路徑(location指令),判斷請求的…