<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Get_ssh_key_info_via_go</id>
	<title>Get ssh key info via go - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Get_ssh_key_info_via_go"/>
	<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Get_ssh_key_info_via_go&amp;action=history"/>
	<updated>2026-04-25T08:29:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Get_ssh_key_info_via_go&amp;diff=4804&amp;oldid=prev</id>
		<title>Busk at 04:19, 19 December 2023</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Get_ssh_key_info_via_go&amp;diff=4804&amp;oldid=prev"/>
		<updated>2023-12-19T04:19:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:19, 19 December 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l65&quot; &gt;Line 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 65:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         defer client.Close()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         defer client.Close()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;./getsshkeyandver &amp;lt;ip&amp;gt; &amp;lt;port&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Get_ssh_key_info_via_go&amp;diff=4803&amp;oldid=prev</id>
		<title>Busk: Created page with &quot;``` package main  import (         &quot;bufio&quot;         &quot;encoding/base64&quot;         &quot;fmt&quot;         &quot;log&quot;         &quot;net&quot;         &quot;os&quot;         &quot;strconv&quot;         &quot;strings&quot;          &quot;golan...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Get_ssh_key_info_via_go&amp;diff=4803&amp;oldid=prev"/>
		<updated>2023-12-19T04:19:20Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;``` package main  import (         &amp;quot;bufio&amp;quot;         &amp;quot;encoding/base64&amp;quot;         &amp;quot;fmt&amp;quot;         &amp;quot;log&amp;quot;         &amp;quot;net&amp;quot;         &amp;quot;os&amp;quot;         &amp;quot;strconv&amp;quot;         &amp;quot;strings&amp;quot;          &amp;quot;golan...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;```&lt;br /&gt;
package main&lt;br /&gt;
&lt;br /&gt;
import (&lt;br /&gt;
        &amp;quot;bufio&amp;quot;&lt;br /&gt;
        &amp;quot;encoding/base64&amp;quot;&lt;br /&gt;
        &amp;quot;fmt&amp;quot;&lt;br /&gt;
        &amp;quot;log&amp;quot;&lt;br /&gt;
        &amp;quot;net&amp;quot;&lt;br /&gt;
        &amp;quot;os&amp;quot;&lt;br /&gt;
        &amp;quot;strconv&amp;quot;&lt;br /&gt;
        &amp;quot;strings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;golang.org/x/crypto/ssh&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
func KeyPrint(dialAddr string, addr net.Addr, key ssh.PublicKey) error {&lt;br /&gt;
        fmt.Printf(&amp;quot;%s %s %s\n&amp;quot;, strings.Split(dialAddr, &amp;quot;:&amp;quot;)[0], key.Type(), base64.StdEncoding.EncodeToString(key.Marshal()))&lt;br /&gt;
        return nil&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func getSshVersion(addr string) (string, error) {&lt;br /&gt;
        conn, err := net.Dial(&amp;quot;tcp&amp;quot;, addr)&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                return &amp;quot;&amp;quot;, err&lt;br /&gt;
        }&lt;br /&gt;
        defer conn.Close()&lt;br /&gt;
&lt;br /&gt;
        go fmt.Fprint(conn, &amp;quot;SSH-2.0-justgettingyourversionstring\r\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        versioninfo, err := bufio.NewReader(conn).ReadString('\n')&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                return &amp;quot;&amp;quot;, err&lt;br /&gt;
        }&lt;br /&gt;
        if versioninfo[len(versioninfo)-1] == '\r' {&lt;br /&gt;
                versioninfo = versioninfo[:len(versioninfo)-1]&lt;br /&gt;
        }&lt;br /&gt;
        return versioninfo, nil&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
        // var host = fmt.Sprintf(&amp;quot;%s&amp;quot;, os.Args[1])&lt;br /&gt;
        var host string = os.Args[1]&lt;br /&gt;
        port, err := strconv.Atoi(os.Args[2])&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                panic(err)&lt;br /&gt;
        }&lt;br /&gt;
        sshConfig := &amp;amp;ssh.ClientConfig{&lt;br /&gt;
                HostKeyCallback: KeyPrint,&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        addr := fmt.Sprintf(&amp;quot;%s:%d&amp;quot;, host, port)&lt;br /&gt;
&lt;br /&gt;
        versioninfo, err := getSshVersion(addr)&lt;br /&gt;
        fmt.Printf(&amp;quot;vinfo %v&amp;quot;, versioninfo)&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                log.Fatalln(err)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        client, err := ssh.Dial(&amp;quot;tcp&amp;quot;, addr, sshConfig)&lt;br /&gt;
        return&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                log.Fatalln(err)&lt;br /&gt;
        }&lt;br /&gt;
        defer client.Close()&lt;br /&gt;
}&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
</feed>