去语言使用scp的方法实例分析

  

本文实例讲述了去语言使用scp的方法。分享给大家供大家参考。具体如下:

  

代码如下:主要包
  导入(
  ,,"code.google.com/p/go.crypto/ssh”
  ,,“加密”
  ,,“加密/rsa”
  ,,“加密/x509”
  ,,“编码/pem”
  ,,“fmt”
  ,,“输入输出”
  )
  const privateKey='内容id_rsa '
  钥匙链型结构{
  ,,* rsa的关键。PrivateKey
  }
  func (k *钥匙扣)键(int)(接口{},错误){
  ,,如果我!=0 {
  ,,,,,,返回nil, nil
  ,,}
  ,,返回,k.key。PublicKey, nil
  }
  func (k *钥匙扣)符号(int,兰德io。读者,[]的数据字节)(sig[]字节,犯错错误){
  ,,hashFunc:=加密。SHA1
  ,,h:=hashFunc.New ()
  ,,h.Write(数据)
  ,,文摘:=h.Sum (nil)
  ,,返回rsa。SignPKCS1v15(兰德,k。键,hashFunc消化)
  }
  函数main () {
  ,,块,_:=pem.Decode([]字节(privateKey))
  ,,rsakey _:=x509.ParsePKCS1PrivateKey (block.Bytes)
  ,,clientKey:=,钥匙扣{rsakey}
  ,,clientConfig:=和ssh。ClientConfig {
  ,,,,,,用户:“wuhao”,
  ,,,,,,身份验证:[]ssh。ClientAuth {
  ,,,,,,,,,,ssh.ClientAuthKeyring (clientKey),
  ,,,,,,},
  ,,}
  ,,客户端,犯错:=ssh。刻度盘(“tcp”、“127.0.0.1:22”, clientConfig)
  ,,如果犯错!=nil {
  ,,,,,,恐慌(“未能表盘:”+ err.Error ())
  ,,}
  ,,会话,犯错:=client.NewSession ()
  ,,如果犯错!=nil {
  ,,,,,,恐慌(“未能创建会话:”+ err.Error ())
  ,,}
  ,,推迟session.Close ()
  ,,去func () {
  ,,,,,,w, _:=session.StdinPipe ()
  ,,,,,,推迟w.Close ()
  ,,,,,,内容:=" 123456789 \ n "
  ,,,,,,fmt。Fprintln (w,“C0644”, len(内容)、“测试文件”)
  ,,,,,,fmt。Fprint (w,内容)
  ,,,,,,fmt。Fprint (w \ x00)//传输以\ x00结束
  ,,}()
  ,,如果犯错:=T诵?“/usr/bin/scp -qrt。/?;犯错!=nil {
  ,,,,,,恐慌(“未能运行:”+ err.Error ())
  ,,}
  }

  

希望本文所述对大家的去语言程序设计有所帮助。

去语言使用scp的方法实例分析