本文实例讲述了去语言使用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 ())
,,}
}
希望本文所述对大家的去语言程序设计有所帮助。