1. ssh 工具登陆(实际开发中最常见)
推荐xshell,免密登陆参考:Xshell配置ssh免密码登录-密钥公钥(Public key)
2. windows terminal
- 安装 openssh,貌似安装 git 就会有,用
ssh-keygen
生成一对密钥 - 使用命令
ssh root@127.0.0.1
, root 为登陆的用户名,127.0.0.1 替换为登陆远程机器的地址 - 在远程机器上 ~./.ssh/authorized_keys 加上本机的公钥 id_rsa.pub,就可免密登陆
3. golang 代码
func main()
password := "youpassword"
addr := "106.12.40.250:22"
auth := make([]ssh.AuthMethod, 0)
auth = append(auth, ssh.Password(password))
config := &ssh.ClientConfig{User: "root", Auth: auth,
//需要验证服务端,不做验证返回nil就可以,点击HostKeyCallback看源码就知道了
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
return nil
}}
client, err := ssh.Dial("tcp", addr, config)
if err != nil {
log.Fatal(err)
return
}
defer client.Close()
session, err := client.NewSession()
if err != nil {
log.Fatal(err)
return
}
defer session.Close()
session.Stdout = os.Stdout
session.Stderr = os.Stderr
session.Stdin = os.Stdin
modes := ssh.TerminalModes{
ssh.ECHO: 0,
ssh.TTY_OP_ISPEED: 14400,
ssh.TTY_OP_OSPEED: 14400,
}
if err = session.RequestPty("xterm", 25, 80, modes); err != nil {
log.Fatal(err)
return
}
if err = session.Shell(); err != nil {
log.Fatal(err)
return
}
if err = session.Wait(); err != nil {
log.Fatal(err)
return
}
}