久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

go語言ssh,go語言ssh模塊

gitee碼云ssh配置無法使用的解決辦法

時(shí)間為2021-11-02,git版本2.33.1-64-bit,電腦為Window10。

目前創(chuàng)新互聯(lián)建站已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、潮安網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

根據(jù)網(wǎng)上所述,安裝好Git、本地生成SSH公私鑰、增加公鑰到Gitee。但是拉取遠(yuǎn)程倉(cāng)庫(kù)到本地提示git@gitee.com: Permission denied (publickey)

使用ssh -T git@gitee.com命令查看也是如此。

原來是新版本W(wǎng)indow上的Git使用的OpenSSH版本是8.8,默認(rèn)使用的是RSA-SHA2算法,而Gitee使用的golang ssh庫(kù)使用的是RSA-SHA1算法,造成公鑰驗(yàn)證不通過。

解決辦法是在個(gè)人用戶的.ssh文件夾下創(chuàng)建一個(gè)名為config的配置文件,文件中寫入以下內(nèi)容

Host gitee.com

HostkeyAlgorithms +ssh-rsa

PubkeyAcceptedAlgorithms +ssh-rsa

golang SSH客戶端三件套 - 1遠(yuǎn)程連接 shell

golang SSH客戶端系列文章目錄

SSH(Secure Shell)協(xié)議在遠(yuǎn)程登錄時(shí)比較常用,但是除此之外還有一些其它的功能也很好用,比如端口映射,X11轉(zhuǎn)發(fā),sftp文件傳輸?shù)取?/p>

以下三篇文章將介紹golang版SSH的遠(yuǎn)程登錄功能,端口映射功能及sftp文件傳輸功能。X11包含GUI的一些操作,沒有找到相關(guān)的包,故不做介紹

通過golang自帶的ssh包 golang.org/x/crypto/ssh 可以實(shí)現(xiàn)遠(yuǎn)程登錄功能, 默認(rèn)是不支持tab鍵和上下箭頭的 ,

通過導(dǎo)入golang.org/x/crypto/ssh/terminal來創(chuàng)建VT100終端可以支持tab等功能,讓golang版本的ssh客戶端體驗(yàn)和平時(shí)用的其它客戶端差不多。

go的ssh怎么執(zhí)行sudo

指令就是你執(zhí)行的shell命令 比如我要運(yùn)行php 輸入: php test.php 就會(huì)執(zhí)行 第一個(gè)php是執(zhí)行程序的名稱

如何使用Go語言實(shí)現(xiàn)遠(yuǎn)程執(zhí)行命令

一般命令

所謂一般命令,就是在一定時(shí)間內(nèi)會(huì)執(zhí)行完的命令。比如 grep, cat 等等。 執(zhí)行命令的步驟是:連接,執(zhí)行,獲取結(jié)果

連接

連接包含了認(rèn)證,可以使用 password 或者 sshkey 2種方式來認(rèn)證。下面的示例為了簡(jiǎn)單,使用了密碼認(rèn)證的方式來完成連接。

import (

"fmt"

"time"

"golang.org/x/crypto/ssh"

)

func connect(user, password, host string, port int) (*ssh.Session, error) {

var (

auth []ssh.AuthMethod

addr string

clientConfig *ssh.ClientConfig

client *ssh.Client

session *ssh.Session

err error

)

// get auth method

auth = make([]ssh.AuthMethod, 0)

auth = append(auth, ssh.Password(password))

clientConfig = ssh.ClientConfig{

User: user,

Auth: auth,

Timeout: 30 * time.Second,

}

// connet to ssh

addr = fmt.Sprintf("%s:%d", host, port)

if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {

return nil, err

}

// create session

if session, err = client.NewSession(); err != nil {

return nil, err

}

return session, nil

}

連接的方法很簡(jiǎn)單,只要提供登錄主機(jī)的 用戶*, *密碼*, *主機(jī)名或者IP*, *SSH端口

執(zhí)行,命令獲取結(jié)果

連接成功后,執(zhí)行命令很簡(jiǎn)單

import (

"fmt"

"log"

"os"

"time"

"golang.org/x/crypto/ssh"

)

func main() {

session, err := connect("root", "xxxxx", "127.0.0.1", 22)

if err != nil {

log.Fatal(err)

}

defer session.Close()

session.Run("ls /; ls /abc")

}

上面代碼運(yùn)行之后,雖然命令正常執(zhí)行了,但是沒有正常輸出的結(jié)果,也沒有異常輸出的結(jié)果。 要想顯示結(jié)果,需要將 session 的 Stdout 和 Stderr 重定向 修改 func main 為如下:

func main() {

session, err := connect("root", "xxxxx", "127.0.0.1", 22)

if err != nil {

log.Fatal(err)

}

defer session.Close()

session.Stdout = os.Stdout

session.Stderr = os.Stderr

session.Run("ls /; ls /abc")

}

這樣就能在屏幕上顯示正常,異常的信息了。

交互式命令

上面的方式無法遠(yuǎn)程執(zhí)行交互式命令,比如 top , 遠(yuǎn)程編輯一個(gè)文件,比如 vi /etc/nginx/nginx.conf 如果要支持交互式的命令,需要當(dāng)前的terminal來接管遠(yuǎn)程的 PTY。

func main() {

session, err := connect("root", "olordjesus", "dockers.iotalabs.io", 2210)

if err != nil {

log.Fatal(err)

}

defer session.Close()

fd := int(os.Stdin.Fd())

oldState, err := terminal.MakeRaw(fd)

if err != nil {

panic(err)

}

defer terminal.Restore(fd, oldState)

// excute command

session.Stdout = os.Stdout

session.Stderr = os.Stderr

session.Stdin = os.Stdin

termWidth, termHeight, err := terminal.GetSize(fd)

if err != nil {

panic(err)

}

// Set up terminal modes

modes := ssh.TerminalModes{

ssh.ECHO: 1, // enable echoing

ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud

ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud

}

// Request pseudo terminal

if err := session.RequestPty("xterm-256color", termHeight, termWidth, modes); err != nil {

log.Fatal(err)

}

session.Run("top")

}

當(dāng)前題目:go語言ssh,go語言ssh模塊
網(wǎng)頁路徑:http://sd-ha.com/article48/hdhjep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、企業(yè)建站、自適應(yīng)網(wǎng)站、App開發(fā)、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化