真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言遠(yuǎn)程ssh,go語言服務(wù)器

SSH多種遠(yuǎn)程登錄方法

使用 SSH 登錄服務(wù)器有兩種方法: 用戶賬號登錄 和 使用公鑰登錄

創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為城北企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,城北網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

直接使用以下命令

另外可以配置主機(jī)別名,這個(gè)和 使用公鑰登錄 差不多,區(qū)別是無需指定公鑰地址而已,這里就不重復(fù)了。

方法一:(在命令行中指定私鑰文件)

方法二:(使用 ssh-agent 代理)

方法三:(在 SSH 配置中指定私鑰文件)

使用跳板機(jī)登錄的方法在我看來不算其它登錄方式,它用到的還是本章的內(nèi)容。

如果我把這三種方法都用了呢?即既使用了 -i ~/.ssh/id_rsa_server ,又使用了 ssh-agent ssh-add ~/.ssh/id_rsa_server ,還使用了域名主機(jī)配置 IdentityFile ~/.ssh/id_rsa 。

答案很簡單,SSH 會先使用 -i ~/.ssh/id_rsa_server ,如果登錄失敗,則使用 ssh-agent ssh-add ~/.ssh/id_rsa_server ,找不到合適的公鑰的話,再使用 IdentityFile ~/.ssh/id_rsa ,還是失敗的話則提示輸入密碼,如果允許賬號登錄的話,否則整個(gè)登錄失敗。

教你如何通過ssh控制遠(yuǎn)程主機(jī),遠(yuǎn)程執(zhí)行命令

教你如何通過ssh控制遠(yuǎn)程主機(jī),遠(yuǎn)程執(zhí)行命令ssh控制遠(yuǎn)程主機(jī)遠(yuǎn)程執(zhí)行命令這個(gè)分兩步,很簡單很實(shí)用。第一步,設(shè)置ssh免認(rèn)證,免認(rèn)證就是只不用密碼認(rèn)證就可以直接登錄,這在寫腳本服務(wù)器控制時(shí)特別有用。每二步,就是到遠(yuǎn)端服務(wù)器上去執(zhí)行命令

假如現(xiàn)在有兩個(gè)服務(wù)器,一個(gè)叫SA,另一個(gè)叫SB。現(xiàn)在我要在SA上去控制SB。

格式:ssh

SB_用戶名@SB_IP

命令for

example:ssh

tuxedo@172.16.18.54

echo

aaahzs_test.txtssh

tuxedo@172.16.18.54

'echo

-e

haha/n

hoho

hzs_test.txt'

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

一般命令

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

連接

連接包含了認(rèn)證,可以使用 password 或者 sshkey 2種方式來認(rè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

}

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

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

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

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")

}

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í)用的其它客戶端差不多。


網(wǎng)站欄目:go語言遠(yuǎn)程ssh,go語言服務(wù)器
當(dāng)前鏈接:http://weahome.cn/article/phhcjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部