diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cc67606 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "python.linting.pylintEnabled": true, + "python.linting.enabled": true +} \ No newline at end of file diff --git a/back/back.go b/back/back.go index 8c6bbfe..dc8dfdb 100644 --- a/back/back.go +++ b/back/back.go @@ -63,6 +63,11 @@ func (b *Backend) Auth(user, response *remote.User) (err error) { return } +func (b *Backend) IssueHostCertificate(req *remote.HostCertificateRequest, resp *remote.CertificateResponse) error { + err := getCAClient().Call("CA.IssueHostCertificate", req, resp) + return err +} + func (b *Backend) IssueCertificate(req *remote.CertificateRequest, resp *remote.CertificateResponse) error { err := getCAClient().Call("CA.GetNewCertificate", req, resp) //So far we just relaying the request to the ca diff --git a/back/server.go b/back/back_server.go similarity index 100% rename from back/server.go rename to back/back_server.go diff --git a/ca/ca.go b/ca/ca.go index b6809c6..3b6cb9a 100644 --- a/ca/ca.go +++ b/ca/ca.go @@ -13,6 +13,7 @@ import ( const ( CAPRIVATEFILE = "SHREE_CAPRIVATE" + CAHOSTPRIKEY = "SHREE_CAHOSTPRIVATE" ) func main() { @@ -31,7 +32,7 @@ func initCA() { } var onceLock *sync.Once -var privateKeySigner ssh.Signer +var hostPrivatekey, privateKeySigner ssh.Signer var marshaledHostPublicKey, marshaledUserPublicKey []byte //getCAUserPubliKey loads ca user public key @@ -54,6 +55,20 @@ func getCAHostPubliKey() { marshaledHostPublicKey = b } +//Get Hosts private key +func getCAHostPrivateKey() { + p := os.Getenv(CAHOSTPRIKEY) + b, err := ioutil.ReadFile(p) + if err != nil { + log.Fatal("Couldn't load host private key\t", err) + } + pr, err := ssh.ParsePrivateKey(b) + if err != nil { + log.Fatal("Couldn't parse host private key") + } + hostPrivatekey = pr +} + //getCAPrivateKey loads ca private key memory //to be used with sync.Once func getCAPrivateKey() { @@ -78,18 +93,24 @@ func panicErr(err error) { //getCertificate signes the certificate with validity of 1 yr //it only return non nil if any problem occured in signing process -func getCertificate(username string, tobesigned ssh.PublicKey) (*ssh.Certificate, error) { +func getCertificate(username string, tobesigned ssh.PublicKey, certType uint32) (*ssh.Certificate, error) { cert := new(ssh.Certificate) cert.Key = tobesigned cert.ValidPrincipals = []string{username} //Valid principal is the username of the user now := time.Now() cert.Serial = uint64(now.Unix()) - cert.CertType = ssh.UserCert //Sets certificate type + cert.CertType = certType //Sets certificate type //Valid for a year cert.ValidBefore = uint64(now.Add(time.Hour * 24 * 365).Unix()) //Permits only port forwarding cert.Extensions = map[string]string{"permit-port-forwarding": ""} - err := cert.SignCert(rand.Reader, privateKeySigner) + var signer ssh.Signer + if certType == ssh.HostCert { + signer = hostPrivatekey + } else { + signer = privateKeySigner + } + err := cert.SignCert(rand.Reader, signer) if err != nil { return nil, err } diff --git a/ca/ca_host_key b/ca/ca_host_key deleted file mode 100644 index cd13126..0000000 --- a/ca/ca_host_key +++ /dev/null @@ -1,49 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -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 ------END OPENSSH PRIVATE KEY----- diff --git a/ca/ca_host_key.pub b/ca/ca_host_key.pub deleted file mode 100644 index aef85b6..0000000 --- a/ca/ca_host_key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDUVV4SA521/Az+61kzIofIyyJIrwNmdKQ2Tbc4X4OkGCtWEJ5zsMqvZ5/WhRc9Rh5EpRPkihpJcRtMIVNOK1UKuiznq/RKdRMZgrLEO2HJVu1F60yc7Rx8JAZ3QM5K/k8471G+k181fwaW4BAGq8dolNRKYTALKTSkG/q1Tz9EACnEvMsIN+sPGpsIFDLNIMLfjAhZ5vNc6FXHbbnByaIKgn1EJmmD2pXV12eoG6CITw6JBTWAuPvc6ALTBfz9VnZiK9EOPqJKJ/5WMfBKpIe55/6Pcn8vDBalxBUgVcJT0DfdQdHLpG5tC0QuzATU/St7OtgbNPp/ffMPi3K46rBccYupNkyqvVdlDvuaqY7sDRPE3/pjRr6Vu5fYnPg8bUPXy0lNSzuAJwiKCxNerjR7C0qSY+8vvODh7sXAq+0LF6obglec92xLd80KLpS/WuhebHovpfiKNUbDTIj2Tov+PeLFUIn02BKhBflANLoBA6S2Yv8Xt3KXsvNIn9j8J7cH1bX1kqPf+yCuv53YpCJfFlegqV7l62UyAGFQAZdqn5SY46Ml9dzqjVYGSladH+UFrqrROWRmL3YPlVPl1YbmDaUA/A/m/fp1UE4VSxEEuBPcZXehpC+cTpP3/MUE0hhu3VcwA9kFtapUOMkUsZOPR235XNqHTFq5g5/o855WXQ== devansh42@localhost.localdomain diff --git a/ca/ca_service.go b/ca/ca_service.go index bcda31d..0dabf50 100644 --- a/ca/ca_service.go +++ b/ca/ca_service.go @@ -18,7 +18,7 @@ func (c *CA) GetNewCertificate(req *remote.CertificateRequest, resp *remote.Cert if err != nil { return err } - cert, err := getCertificate(req.User.Username, pubkey) + cert, err := getCertificate(req.User.Username, pubkey, ssh.UserCert) if err != nil { return err } @@ -37,3 +37,18 @@ func (c *CA) GetCAHostPublicKey(req *remote.CertificateRequest, cert *remote.Cer cert.Bytes = marshaledHostPublicKey return nil } + +func (c *CA) IssueHostCertificate(req *remote.HostCertificateRequest, resp *remote.CertificateResponse) (err error) { + + pubkey, _, _, _, err := ssh.ParseAuthorizedKey(req.PublicKey) + if err != nil { + return err + } + cert, err := getCertificate(req.Principal, pubkey, ssh.HostCert) + if err != nil { + return err + } + resp.Bytes = ssh.MarshalAuthorizedKey(cert) + + return +} diff --git a/ca/ca_test.go b/ca/ca_test.go index fdb6a91..300f750 100644 --- a/ca/ca_test.go +++ b/ca/ca_test.go @@ -13,7 +13,7 @@ const homedir = "/home/devansh42" func TestGetCertificate(t *testing.T) { initTestEnviroment() ca := new(CA) - b, _ := ioutil.ReadFile("./id_user.pub") + b, _ := ioutil.ReadFile("../../keys/id_user.pub") user := new(remote.User) user.Uid = 1 @@ -51,9 +51,9 @@ func TestGetUserPublicKey(t *testing.T) { } func initTestEnviroment() { - os.Setenv(CAUSERPUBKEY, "./ca_user_key.pub") - os.Setenv(CAHOSTPUBKEY, "./ca_host_key.pub") - os.Setenv(CAPRIVATEFILE, "./ca_user_key") + os.Setenv(CAUSERPUBKEY, "../../keys/ca_user_key.pub") + os.Setenv(CAHOSTPUBKEY, "../../keys/ca_host_key.pub") + os.Setenv(CAPRIVATEFILE, "../../keys/ca_user_key") initCA() diff --git a/ca/ca_user_key b/ca/ca_user_key deleted file mode 100644 index dcbebdd..0000000 --- a/ca/ca_user_key +++ /dev/null @@ -1,49 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -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 ------END OPENSSH PRIVATE KEY----- diff --git a/ca/ca_user_key.pub b/ca/ca_user_key.pub deleted file mode 100644 index 6364fa5..0000000 --- a/ca/ca_user_key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDrSP6vYh2UteKVro174g4qtrlLVVYvEnClJSw69fXeimfeAR7vQh1/vBRGdRe9tAVCT4op150slWaxTkqfIsWZTQGtkpLfZC0f1GoDqJy3vkziEXxQmcfBfiC2eslaePY1tJxy/7TYHR+NMEKR5dGmYcZ0BMHSDVcLAnUa5CnJQmjV/4Ozk5sxXzhFSSEZQ1OjRh7t79jZKyDaz7eZXSvsFb/06z3qqs7FREdK68f4yjhEvQ/5J41bSPG1FqHJKOL8kiLXRRPF8FZbmyFm+DAnAlFuRUXQ4uZz9nr8t7Dij+7CnjEz1COGCRU//KMm+4n6GS9NsILxt/bLlkg4ESzLDF8qR6/0f5J5M0oyFjTDxu1Xn+ULOkfzy05bMQ37C/4i7qIoKH3REzrJ2E8js5DyIM2VDQU/cF747LyRYaN5cptrOuxq41DvZ/WPBQo+fFUuP2zPi0k4mItT49eAktM3dHhToM6hrl+Ywdxct0vG4wlPnxS6mPiL1dfAjytL4CxzGeUmytC5E8BD2yAyCyuUSqYWG/8jBAdOcliy6nWuV6WGXuQtPeVzNO8g1ruHSr8dXvi92CE21ZDpKS7PtMhIRskn1VorNbPL5m2JD95aWQz/0hRdUknfbAi171F3MoiHgfE8CNYEjGI9bo5rKufKL2bMP3AF/uspkXDev9xUUQ== devansh42@localhost.localdomain diff --git a/ca/id_user.pub b/ca/id_user.pub deleted file mode 100644 index 2ac4523..0000000 --- a/ca/id_user.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDNORwhcA5lGc3RQ9pcZ0Cwf7kRPlAogeAHh/704jvg2El10pr2XGH/CTl01e+AL1SzyZrVu/IBxVllRh0Jvu/gpyeoMp94bkW5W3AVAXm5uBUzsS0ZRAQCg1XJAoeHaQdlcs3SWyyvBhdejgfPFJMYo5qSXfQMhbbs4otmhPfLKVxu62GDDVdOaDI0FOZ/voeyC41arm+j6azd/s10SxnR1iKuN4/i+YlRb/PMJYLDuSSw3McSk+RYk5eBAJM6RZcYZvDrf/mlEFLz/OmaIg31yEsutOvxKrP7FVg6Jd5vwJz5u1yHIUB2V4gD4P3GLpmoW22hzM0W3IVMmhUSjEcJGidMhrLNcqYN1m11JzcOjary1CBVdDUaWAWKtG3F/ByROdgsk+pn8LRE/PQ+sBleFsFUJru7j35To2tZ0jgcgyTDkYEuH4HmBkkrNFz4A+u0mK2NrOP/jW7Wj74I5vh7fLEqeW8WPoUF1WX9LFJSl+yyEO7a+9aN36EIANpMPtR6MBWTSGTDLTAT0V2/EXepR8tQ1FxvAbw6+h0QujjTGJ1I8pH0oCHw8guI2HG4JsMWXYWgcoBP8Gl9OJfJaUYMhgc2helPrUQf/qs7xV15x0a6NQW3QfsI9DfxgtJrOFNo2cd8s7cqGmQCaN1lCSdzq6OwfoxENW/efRh/g9WsMQ== devansh42@localhost.localdomain diff --git a/exe/cli/app_test.go b/exe/cli/app_test.go index ca9d723..43540a9 100644 --- a/exe/cli/app_test.go +++ b/exe/cli/app_test.go @@ -1,12 +1,8 @@ package main import ( - "log" - "net/http" "os" "testing" - - "github.com/devansh42/shree/exe" ) func TestHomeDirectory(t *testing.T) { @@ -18,17 +14,3 @@ func TestHomeDirectory(t *testing.T) { } const testingHttpServerPort = 9090 - -//starts testing http server on given port -func startTestHttpServer(port int) { - - http.HandleFunc("/"+sprint(port), func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("Hello world\n")) - w.Write([]byte("Here is the remote addr\n")) - w.Write([]byte(r.RemoteAddr)) - w.WriteHeader(200) - }) - log.Println("Testing server is listening at ", port) - go http.ListenAndServe(exe.JoinHost("", port), nil) - -} diff --git a/exe/cli/auth_test.go b/exe/cli/auth_test.go index 18055ae..68bff1e 100644 --- a/exe/cli/auth_test.go +++ b/exe/cli/auth_test.go @@ -116,7 +116,7 @@ func (b *Backend) IssueCertificate(req *remote.CertificateRequest, resp *remote. cert.ValidPrincipals = []string{req.User.Username} cert.CertType = ssh.UserCert cert.ValidBefore = uint64(time.Now().Add(time.Minute * 60 * 24 * 365).Unix()) - prvb, err := ioutil.ReadFile("./ca_user_key") + prvb, err := ioutil.ReadFile("../../keys/ca_user_key") if err != nil { return err } diff --git a/exe/cli/ca_host_key.pub b/exe/cli/ca_host_key.pub deleted file mode 100644 index aef85b6..0000000 --- a/exe/cli/ca_host_key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDUVV4SA521/Az+61kzIofIyyJIrwNmdKQ2Tbc4X4OkGCtWEJ5zsMqvZ5/WhRc9Rh5EpRPkihpJcRtMIVNOK1UKuiznq/RKdRMZgrLEO2HJVu1F60yc7Rx8JAZ3QM5K/k8471G+k181fwaW4BAGq8dolNRKYTALKTSkG/q1Tz9EACnEvMsIN+sPGpsIFDLNIMLfjAhZ5vNc6FXHbbnByaIKgn1EJmmD2pXV12eoG6CITw6JBTWAuPvc6ALTBfz9VnZiK9EOPqJKJ/5WMfBKpIe55/6Pcn8vDBalxBUgVcJT0DfdQdHLpG5tC0QuzATU/St7OtgbNPp/ffMPi3K46rBccYupNkyqvVdlDvuaqY7sDRPE3/pjRr6Vu5fYnPg8bUPXy0lNSzuAJwiKCxNerjR7C0qSY+8vvODh7sXAq+0LF6obglec92xLd80KLpS/WuhebHovpfiKNUbDTIj2Tov+PeLFUIn02BKhBflANLoBA6S2Yv8Xt3KXsvNIn9j8J7cH1bX1kqPf+yCuv53YpCJfFlegqV7l62UyAGFQAZdqn5SY46Ml9dzqjVYGSladH+UFrqrROWRmL3YPlVPl1YbmDaUA/A/m/fp1UE4VSxEEuBPcZXehpC+cTpP3/MUE0hhu3VcwA9kFtapUOMkUsZOPR235XNqHTFq5g5/o855WXQ== devansh42@localhost.localdomain diff --git a/exe/cli/ca_user_key b/exe/cli/ca_user_key deleted file mode 100644 index dcbebdd..0000000 --- a/exe/cli/ca_user_key +++ /dev/null @@ -1,49 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -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 ------END OPENSSH PRIVATE KEY----- diff --git a/exe/cli/ca_user_key.pub b/exe/cli/ca_user_key.pub deleted file mode 100644 index 6364fa5..0000000 --- a/exe/cli/ca_user_key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDrSP6vYh2UteKVro174g4qtrlLVVYvEnClJSw69fXeimfeAR7vQh1/vBRGdRe9tAVCT4op150slWaxTkqfIsWZTQGtkpLfZC0f1GoDqJy3vkziEXxQmcfBfiC2eslaePY1tJxy/7TYHR+NMEKR5dGmYcZ0BMHSDVcLAnUa5CnJQmjV/4Ozk5sxXzhFSSEZQ1OjRh7t79jZKyDaz7eZXSvsFb/06z3qqs7FREdK68f4yjhEvQ/5J41bSPG1FqHJKOL8kiLXRRPF8FZbmyFm+DAnAlFuRUXQ4uZz9nr8t7Dij+7CnjEz1COGCRU//KMm+4n6GS9NsILxt/bLlkg4ESzLDF8qR6/0f5J5M0oyFjTDxu1Xn+ULOkfzy05bMQ37C/4i7qIoKH3REzrJ2E8js5DyIM2VDQU/cF747LyRYaN5cptrOuxq41DvZ/WPBQo+fFUuP2zPi0k4mItT49eAktM3dHhToM6hrl+Ywdxct0vG4wlPnxS6mPiL1dfAjytL4CxzGeUmytC5E8BD2yAyCyuUSqYWG/8jBAdOcliy6nWuV6WGXuQtPeVzNO8g1ruHSr8dXvi92CE21ZDpKS7PtMhIRskn1VorNbPL5m2JD95aWQz/0hRdUknfbAi171F3MoiHgfE8CNYEjGI9bo5rKufKL2bMP3AF/uspkXDev9xUUQ== devansh42@localhost.localdomain diff --git a/exe/cli/id_host b/exe/cli/id_host deleted file mode 100644 index 0085fe8..0000000 --- a/exe/cli/id_host +++ /dev/null @@ -1,49 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -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 ------END OPENSSH PRIVATE KEY----- diff --git a/exe/cli/id_host-cert.pub b/exe/cli/id_host-cert.pub deleted file mode 100644 index 18ae2b2..0000000 --- a/exe/cli/id_host-cert.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa-cert-v01@openssh.com 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 devansh42@localhost.localdomain diff --git a/exe/cli/localpfw_test.go b/exe/cli/localpfw_test.go deleted file mode 100644 index 339214d..0000000 --- a/exe/cli/localpfw_test.go +++ /dev/null @@ -1,48 +0,0 @@ -package main - -import ( - "net/http" - "testing" -) - -//TestLocalPortForwarding tests all operations on local port forwarding scenenarios -func TestLocalPortForwarding(t *testing.T) { - - initApp() - for i := 9000; i < 9015; i++ { - startTestHttpServer(i) - - } - t.Log("Started Test servers") - for i := 3000; i < 3015; i++ { - err := forwardLocalPort("tcp", i, 9000+(i-3000)) - if err != nil { - t.Error(err) - continue - } - t.Log("Local Portfwded ", i, "\t->\t", 9000+(i-3000)) - - } - t.Log("Started Local portfwded") - //lets starts for http responses - for i := 3000; i < 3015; i++ { - t.Log("Hearing from server at ", i) - r, err := http.Get("http://localhost:" + sprint(i) + "/" + sprint(9000+(i-3000))) - if err != nil { - t.Error(err) - continue - } - - t.Log(r.StatusCode) - - } - - t.Log("Now listing local ports") - listConnectedLocalTunnel() - t.Log("Disconnecting locally forwarded ports") - for i := 3000; i < 3015; i++ { - disconnectLocalyForwardedPort(i) - t.Log("Disconnected local tunnel at port ", i) - } - listConnectedLocalTunnel() -} diff --git a/exe/cli/pki.go b/exe/cli/pki.go index 6141c19..4b762c5 100644 --- a/exe/cli/pki.go +++ b/exe/cli/pki.go @@ -95,7 +95,7 @@ func askForPassword() []byte { } //fetchServerCertificateAndPersist, fetches certificate from default certificate repo -func fetchServerCertificateAndPersist() (ssh.PublicKey, error) { +func fetchServerCertificateAndPersist() (*ssh.Certificate, error) { println("Fetching CA Host Certifcate....") cert := new(remote.CertificateResponse) cli := getBackendClient() @@ -110,7 +110,7 @@ func fetchServerCertificateAndPersist() (ssh.PublicKey, error) { pk, _, _, _, _ := parseauthkey(cert.Bytes) println("Cetificate Fetched\nFingerprint\n", ssh.FingerprintLegacyMD5(pk)) localdb.Put([]byte(keyservercertificate), cert.Bytes, nil) - return pk, nil + return pk.(*ssh.Certificate), nil } func getServerCertificate() (cert ssh.PublicKey) { diff --git a/exe/cli/pki_test.go b/exe/cli/pki_test.go index 16d1778..6470421 100644 --- a/exe/cli/pki_test.go +++ b/exe/cli/pki_test.go @@ -78,7 +78,7 @@ func TestGetCAPublicHostCertificate(t *testing.T) { } func (b *Backend) GetCAPublicCertificate(req *remote.CertificateRequest, cert *remote.CertificateResponse) error { - f, err := ioutil.ReadFile("./ca_host_key.pub") + f, err := ioutil.ReadFile("../../keys/ca_host_key.pub") if err != nil { return err } diff --git a/exe/cli/remotepfw.go b/exe/cli/remotepfw.go index 431c650..538eaba 100644 --- a/exe/cli/remotepfw.go +++ b/exe/cli/remotepfw.go @@ -3,6 +3,7 @@ package main //This file contains code for remote port forwarding import ( + "bytes" "errors" "fmt" "log" @@ -59,8 +60,14 @@ func getClientSigner(bpass []byte) (ssh.Signer, error) { } func getHostCallBack() ssh.HostKeyCallback { - cert := getServerCertificate() - return ssh.FixedHostKey(cert) + certb := getServerCertificate() + certchecker := new(ssh.CertChecker) + certchecker.IsHostAuthority = func(auth ssh.PublicKey, address string) bool { + b := marshalauthkey(certb) + c := marshalauthkey(auth) + return bytes.Equal(b, c) + } + return certchecker.CheckHostKey } //forwardRemotePort, forwards remote port src->dest diff --git a/exe/cli/remotepfw_test.go b/exe/cli/remotepfw_test.go index 15d6a55..e403c3b 100644 --- a/exe/cli/remotepfw_test.go +++ b/exe/cli/remotepfw_test.go @@ -28,7 +28,7 @@ func initTestEnvironment(t *testing.T) { func startTestHttpServerForPortRange(t *testing.T) { for i := 0; i < 15; i++ { - startTestHttpServer(3000 + i) + exe.StartTestHttpServer(3000 + i) } t.Log("All http server running") @@ -90,8 +90,8 @@ func TestRemotePortForwardingWithCredentials(t *testing.T) { //Creating fake user currentUser = new(remote.User) - currentUser.Uid = 1 currentUser.Username = "devansh42" + currentUser.Uid = 1 //generating demo credentials generateAndPersistCredentialsForTest(currentUser, testpasswd, t) @@ -132,7 +132,7 @@ func startDemoSSHServer(t *testing.T) { certChecker := new(ssh.CertChecker) certChecker.IsUserAuthority = func(auth ssh.PublicKey) bool { - fb, _ := ioutil.ReadFile("./ca_user_key.pub") + fb, _ := ioutil.ReadFile("../../keys/ca_user_key.pub") pk, _, _, _, _ := parseauthkey(fb) @@ -141,9 +141,9 @@ func startDemoSSHServer(t *testing.T) { return o } config.PublicKeyCallback = callmaker(certChecker) - fb, _ := ioutil.ReadFile("./id_host") + fb, _ := ioutil.ReadFile("../../keys/id_host") signer, _ := ssh.ParsePrivateKey(fb) - bcert, _ := ioutil.ReadFile("./id_host-cert.pub") + bcert, _ := ioutil.ReadFile("../../keys/id_host-cert.pub") pert, _, _, _, err := parseauthkey(bcert) fatalTestErr(t, err) realsigner, err := ssh.NewCertSigner(pert.(*ssh.Certificate), signer) diff --git a/exe/serv/main.go b/exe/serv/main.go index 970af65..3def23a 100644 --- a/exe/serv/main.go +++ b/exe/serv/main.go @@ -1,11 +1,21 @@ package main import ( + "bytes" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/pem" "flag" "fmt" + "io/ioutil" "log" "net/rpc" "os" + "time" + + "github.com/devansh42/shree/remote" + "golang.org/x/crypto/ssh" ) const ( @@ -13,6 +23,7 @@ const ( SHREE_SSH_PRIVATE_KEY = "SHREE_SSH_PRIVATE_KEY" SHREE_SSH_PUBLIC_KEY = "SHREE_SSH_PUBLIC_KEY" SHREE_BACKEND_ADDR = "SHREE_BACKEND_ADDR" + SHREE_HOST_PRINCIPAL = "SHREE_HOST_PRINCIPAL" ) var ( @@ -22,17 +33,26 @@ var ( ) func main() { + appdir := getAppDir() port := flag.Uint("port", 8099, "Port to start ssh server on") - prv := flag.String("prv", "", "Path to private key") - pub := flag.String("pub", "", "Path to public key") + prv := flag.String("prv", sprint(appdir, ps, "id_host"), "Path to private key") + pub := flag.String("pub", sprint(appdir, ps, "id_host.pub"), "Path to public key") baddr := flag.String("baddr", "", "Address of Shree Backend server in host:port format") + host := flag.String("host", "", "Host address of this instance to included in certificate principal") flag.Parse() for !flag.Parsed() { - os.Setenv(SHREE_SSH_PORT, sprint(*port)) - os.Setenv(SHREE_SSH_PRIVATE_KEY, *prv) - os.Setenv(SHREE_SSH_PUBLIC_KEY, *pub) - os.Setenv(SHREE_BACKEND_ADDR, *baddr) + //Waiting for command line argument passing + } + os.Setenv(SHREE_SSH_PORT, sprint(*port)) + os.Setenv(SHREE_SSH_PRIVATE_KEY, *prv) + os.Setenv(SHREE_SSH_PUBLIC_KEY, *pub) + os.Setenv(SHREE_BACKEND_ADDR, *baddr) + os.Setenv(SHREE_HOST_PRINCIPAL, *host) + if *baddr == "" || *host == "" { + log.Fatal("Required args not found, baddr or host") } + initApp() + initServer() //Starts the testing ssh server } func getBackendClient() *rpc.Client { @@ -42,3 +62,129 @@ func getBackendClient() *rpc.Client { } return cli } + +func initApp() { + log.Println("Initializing App") + dirName := getAppDir() + _, err := os.Stat(dirName) + if os.IsNotExist(err) { + os.Mkdir(dirName, 0700) + } + checkForCredentials() +} + +func getAppDir() string { + h, _ := os.UserHomeDir() + + dirName := sprint(h, ps, ".shree") + return dirName +} + +//checkForCertificate, checks for certificate and request if not found +func checkForCredentials() { + log.Print("Checking for Credentials...") + prvn := os.Getenv(SHREE_SSH_PRIVATE_KEY) + pubn := os.Getenv(SHREE_SSH_PUBLIC_KEY) + prvb, err := rF(prvn) + if err != nil { + //file not found + prvb, _ = generateCrendentials() + //Lets write it to fs + ioutil.WriteFile(prvn, prvb, 0400) + } + s, err := ssh.ParsePrivateKey(prvb) + if err != nil { + //Couldn't parse + log.Print("Couldn't parse private due to : ", err.Error()) + + prvb, _ = generateCrendentials() + log.Println("New Credentials generated") + //Lets write it to fs + ioutil.WriteFile(prvn, prvb, 0400) + + } + pubkey := s.PublicKey() + if err != nil { + log.Fatal("Couldn't derive new public key ", err.Error()) + } + marshledPubkey := ssh.MarshalAuthorizedKey(pubkey) + err = ioutil.WriteFile(pubn, marshledPubkey, 0400) + if err != nil { + //Couln't generate + } + certpath := sprint(getAppDir(), ps, "id_host-cert.pub") + cb, err := rF(certpath) + if err != nil { + //Don't have certifiate` + //Let's check for public key + log.Println("Fetching Certificate..") + b := fetchCertificate(marshledPubkey) + log.Print("Certificate Fetched") + hostCertifiate = getCertificateFromBytes(b, marshledPubkey) + } else { + + hostCertifiate = getCertificateFromBytes(cb, marshledPubkey) + } + log.Print("Credential checked") +} + +func getCertificateFromBytes(b, mpubkey []byte) *ssh.Certificate { + pubkey, _, _, _, err := ssh.ParseAuthorizedKey(b) + if err != nil { + + log.Fatal("Couldn't parse the pubkey : ", err.Error()) + } + + x := pubkey.(*ssh.Certificate) + // log.Print(string(ssh.MarshalAuthorizedKey(x.Key))) + // log.Print(string(mpubkey)) + + if !bytes.Equal(mpubkey, ssh.MarshalAuthorizedKey(x.Key)) { + log.Fatal("Invalid certificate") + } + if x.ValidBefore < uint64(time.Now().Unix()) { + log.Fatal("Expired Certificate") + } + return x +} + +//fetchCertificate, requests a certificate from ca +//pub is the public key of this server +func fetchCertificate(pub []byte) (certificateBytes []byte) { + + cli := getBackendClient() + prin := "" + resp := new(remote.CertificateResponse) + err := cli.Call("Backend.IssueHostCertificate", &remote.HostCertificateRequest{PublicKey: pub, Principal: prin}, resp) + if err != nil { + log.Fatal("Couldn't fetch the certificate : ", err.Error()) + } + fn := sprint(getAppDir(), ps, "id_host-cert.pub") + err = ioutil.WriteFile(fn, resp.Bytes, 0400) //Readonly file + if err != nil { + log.Fatal("Couldn't write certificate to fs : ", err.Error()) + } + return resp.Bytes +} + +//generateCredentials, These are generated only ones for a given instance +func generateCrendentials() (prv []byte, pub []byte) { + log.Print("Generating new credentials....") + + pk, err := rsa.GenerateKey(rand.Reader, 4096) + + y := x509.MarshalPKCS1PrivateKey(pk) + pb, err := ssh.NewPublicKey(&pk.PublicKey) + if err != nil { + //handle error + } + pbl := &pem.Block{Bytes: y, Type: "RSA PRIVATE KEY"} + sshpub := ssh.MarshalAuthorizedKey(pb) + var prb = pem.EncodeToMemory(pbl) + log.Println("New Credential generated") + return prb, sshpub +} + +var ps = string(os.PathSeparator) +var hostCertifiate *ssh.Certificate +var rF = ioutil.ReadFile diff --git a/exe/serv/server.go b/exe/serv/server.go index 000081b..88a4628 100644 --- a/exe/serv/server.go +++ b/exe/serv/server.go @@ -43,13 +43,13 @@ func initServer() { if err != nil { log.Fatal("Failed to Listen") } - log.Printf("Starting server at port %d .....", port) + log.Printf("Starting server at port %s .....", port) serverConfig := new(ssh.ServerConfig) - serverConfig.AddHostKey(getHostKey()) certc := new(ssh.CertChecker) certc.IsUserAuthority = userAuthenticator serverConfig.PublicKeyCallback = publicCallBackFunc(certc) + serverConfig.AddHostKey(getHostKey()) for { inconn, err := sshListener.Accept() if err != nil { @@ -91,11 +91,10 @@ func handleTCPFwdRequest(ch *ssh.Request, servconn *ssh.ServerConn) { log.Println("Couldn't start server on given port", err) return } - + var xp struct { + Port uint32 //Port on which connection is listening at remote side + } if ch.WantReply { - var xp struct { - Port uint32 //Port on which connection is listening at remote side - } _, pp, _ := net.SplitHostPort(listener.Addr().String()) pi, _ := strconv.Atoi(pp) @@ -106,20 +105,21 @@ func handleTCPFwdRequest(ch *ssh.Request, servconn *ssh.ServerConn) { for { inconn, err := listener.Accept() if err != nil { - log.Print(err) + log.Print("Error while accepting connection:", err.Error()) continue //Couldn't continue } raddr := inconn.RemoteAddr().String() host, sport, _ := net.SplitHostPort(raddr) port, _ := strconv.Atoi(sport) - pp := ppt{p.Address, p.Port, host, uint32(port)} + pp := ppt{p.Address, xp.Port, host, uint32(port)} b := ssh.Marshal(&pp) sch, rch, err := servconn.OpenChannel("forwarded-tcpip", b) if err != nil { //handle error - log.Print("couldn't open channel ", err.Error()) + log.Print("couldn't open channel for request ", pp, err.Error()) + continue } go ssh.DiscardRequests(rch) go exe.HandleConnectionIO(inconn, sch) @@ -165,20 +165,59 @@ func handleNewServerConn(conn *ssh.ServerConn, newch <-chan ssh.NewChannel, newr } func userAuthenticator(auth ssh.PublicKey) bool { - certc := new(ssh.Certificate) - getBackendClient().Call("Backend.GetCAUserPublicCertificate", new(remote.CertificateRequest), certc) + if caUserPublicKey == nil { - return bytes.Equal(auth.Marshal(), certc.SignatureKey.Marshal()) + certc := new(remote.CertificateResponse) + cli := getBackendClient() + if cli == nil { + log.Fatal("Couldn't reach to backend server") + } + cli.Call("Backend.GetCAUserPublicCertificate", new(remote.CertificateRequest), certc) + caUserPublicKey = certc.Bytes + } + o := bytes.Equal(ssh.MarshalAuthorizedKey(auth), caUserPublicKey) + return o } func getHostKey() ssh.Signer { - fname := os.Getenv(SHREE_SSH_PRIVATE_KEY) - f, err := ioutil.ReadFile(fname) //host private key + if hostKey == nil { - k, err := ssh.ParsePrivateKey(f) + fname := os.Getenv(SHREE_SSH_PRIVATE_KEY) + f, err := ioutil.ReadFile(fname) //host private key + if err != nil { + log.Fatal("Couldn't read private key ", err.Error()) + } + pr, err := ssh.ParsePrivateKey(f) + if err != nil { + log.Fatal("Couldn't parse host private key may be it is broken ", err.Error()) + } + + hostKey, err = ssh.NewCertSigner(hostCertifiate, pr) + if err != nil { + log.Fatal("Couldn't sign certificate : ", err.Error()) + } + + } + //log.Print("From server ", string(hostKey.PublicKey().Marshal())) + return hostKey +} + +/* +func getHostKey() ssh.Signer { + fb, _ := ioutil.ReadFile("../../keys/id_host") + signer, _ := ssh.ParsePrivateKey(fb) + bcert, _ := ioutil.ReadFile("../../keys/id_host-cert.pub") + pert, _, _, _, err := ssh.ParseAuthorizedKey(bcert) + if err != nil { + log.Fatal(err) + } + realsigner, err := ssh.NewCertSigner(pert.(*ssh.Certificate), signer) if err != nil { - log.Fatal("Couldn't parse host private key may be it is broken ", err.Error()) + log.Fatal(err) } - return k + return realsigner } +*/ +var caUserPublicKey []byte +var hostKey ssh.Signer diff --git a/exe/serv/server_test.go b/exe/serv/server_test.go index 8e1819f..68ac784 100644 --- a/exe/serv/server_test.go +++ b/exe/serv/server_test.go @@ -1,29 +1,153 @@ package main import ( + "bytes" + "io/ioutil" + "log" "net" "net/http" + "net/rpc" + "os" "testing" + + "github.com/devansh42/shree/exe" + + "golang.org/x/crypto/ssh" + + "github.com/devansh42/shree/remote" ) //This file contains various server for testing purposes -func TestSimpleHttpServer(t *testing.T) { - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("Hello from, SimpleHTTP Server")) - w.WriteHeader(200) - }) - http.ListenAndServe(":8000", nil) +func gethostCallback(t *testing.T) ssh.HostKeyCallback { + f := "../../keys/ca_host_key.pub" + b, err := ioutil.ReadFile(f) + fatalErr(t, err) + k, _, _, _, err := ssh.ParseAuthorizedKey(b) + fatalErr(t, err) + certchecker := new(ssh.CertChecker) + certchecker.IsHostAuthority = func(auth ssh.PublicKey, address string) bool { + b := ssh.MarshalAuthorizedKey(auth) + c := ssh.MarshalAuthorizedKey(k) + return bytes.Equal(b, c) + } + return certchecker.CheckHostKey +} + +func getSigner(t *testing.T) ssh.AuthMethod { + fp := "../../keys/id_user" + b, err := ioutil.ReadFile(fp) + s, err := ssh.ParsePrivateKey(b) + fatalErr(t, err) + fc := "../../keys/id_user-cert.pub" + b, err = ioutil.ReadFile(fc) + fatalErr(t, err) + ck, _, _, _, err := ssh.ParseAuthorizedKey(b) + fatalErr(t, err) + cert := ck.(*ssh.Certificate) + p, err := ssh.NewCertSigner(cert, s) + fatalErr(t, err) + return ssh.PublicKeys(p) +} + +func getSSHClientConfig(t *testing.T) *ssh.ClientConfig { + config := new(ssh.ClientConfig) + config.User = "devansh42" + + config.HostKeyCallback = gethostCallback(t) + + config.Auth = []ssh.AuthMethod{getSigner(t)} + return config +} + +func setupTestEnvironment(t *testing.T) { + os.Setenv(SHREE_SSH_PORT, sprint(7500)) + os.Setenv(SHREE_SSH_PRIVATE_KEY, "../../keys/id_host") + os.Setenv(SHREE_SSH_PUBLIC_KEY, "../../keys/id_host.pub") + os.Setenv(SHREE_BACKEND_ADDR, "localhost:6500") //Address of rpc server + startTestRPCServer(t) + initApp() + go initServer() //Starts the actual ssh server + +} + +func startTestRPCServer(t *testing.T) { + //Backend + l, err := net.Listen("tcp", os.Getenv(SHREE_BACKEND_ADDR)) + fatalErr(t, err) + rpc.Register(&Backend{}) //Registering backend + go rpc.Accept(l) + t.Log("Accepting backend connections at ", os.Getenv(SHREE_BACKEND_ADDR)) } -func TestServerImplementation(t *testing.T) { - initServer() - //Initialize the server +func fatalErr(t *testing.T, err error) { + if err != nil { + t.Fatal(err) + } +} + +type Backend struct{} + +func (b *Backend) GetCAUserPublicCertificate(req *remote.CertificateRequest, resp *remote.CertificateResponse) error { + f, err := ioutil.ReadFile("../../keys/ca_user_key.pub") + if err != nil { + log.Print(err) + return err + } + k, _, _, _, err := ssh.ParseAuthorizedKey(f) + if err != nil { + log.Println(err) + return err + } + resp.Bytes = ssh.MarshalAuthorizedKey(k) + return nil } -func TestLocalVsRemoteAddr(t *testing.T) { - c, _ := net.Dial("tcp", "www.google.com:80") - t.Log(c.RemoteAddr().String()) - t.Log(c.LocalAddr().String()) +func (b *Backend) IssueHostCertificate(req *remote.HostCertificateRequest, resp *remote.CertificateResponse) (err error) { + f, err := rF("../../keys/id_host-cert.pub") + + if err != nil { + return err + } + + resp.Bytes = f + return +} + +func TestSSHServer(t *testing.T) { + setupTestEnvironment(t) + //Let's make a pseudo tcp connections + + for i := 0; i < 15; i++ { + exe.StartTestHttpServer(3000 + i) + t.Log("Http server is listening at ", 3000+i) + } + cli, err := ssh.Dial("tcp", exe.JoinHost("localhost", os.Getenv(SHREE_SSH_PORT)), getSSHClientConfig(t)) + if err != nil { + t.Fatal("Handshake failed due to ", err.Error()) + } + var m = make(map[string]string) + for i := 0; i < 15; i++ { + l, err := cli.Listen("tcp", exe.JoinHost("0.0.0.0", 0)) + fatalErr(t, err) + f := new(exe.Forwardedport) + f.Listener = l + f.Closer = make(exe.Closerch) + f.DestPort = sprint(3000 + i) + _, p, _ := net.SplitHostPort(l.Addr().String()) + f.SrcPort = p + go exe.HandleForwardedListener(f) //Handles listening + t.Log("port fwd established ", f.SrcPort, "\t->\t", f.DestPort) + m[f.DestPort] = f.SrcPort + } + for k, v := range m { + //ping remotely forwarde ports + res, err := http.Get(sprint("http://localhost:", v, "/", k)) + if err != nil { + t.Log("Couldn't make to port ", v) + continue + } + t.Log("Success! Http request from port ", v, " with code ", res.StatusCode) + } } diff --git a/exe/test.go b/exe/test.go new file mode 100644 index 0000000..1f2a2c4 --- /dev/null +++ b/exe/test.go @@ -0,0 +1,21 @@ +package exe + +import ( + "fmt" + "log" + "net/http" +) + +//starts testing http server on given port +func StartTestHttpServer(port int) { + + http.HandleFunc("/"+fmt.Sprint(port), func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("Hello world\n")) + w.Write([]byte("Here is the remote addr\n")) + w.Write([]byte(r.RemoteAddr)) + w.WriteHeader(200) + }) + log.Println("Testing server is listening at ", port) + go http.ListenAndServe(JoinHost("", port), nil) + +} diff --git a/keys/ca_host_key b/keys/ca_host_key new file mode 100644 index 0000000..43c64e8 --- /dev/null +++ b/keys/ca_host_key @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/keys/ca_host_key.pub b/keys/ca_host_key.pub new file mode 100644 index 0000000..7adde35 --- /dev/null +++ b/keys/ca_host_key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkHYge7ClbrpWgSDCKPu8IS+QophHE4IHFEH+OMzHV6lYwlmtkZHD8ZMWKysp8MU3R7EnSGCJOcon/k22j+jeNCaGB0KbiugN14M4tl95OZawIOLQ8ipmtoj3OAXPlYNZQ21PQRbj54FJrsHHJLc5Z4b8TTSKDBpKesoy5BhUYXv6KAbStb+xjcKitaYnq5+ou1NowDLMhB//1+Sv2fiWHdCqceRdurEKUgqW8K030kYM0pAKqJC4KTA92y3QFZnAFq/W5AwY/0CsLtM4h2Wobj4QiZpbWiErqXJuEJ7gT/ZEBbC0W9UJoPSCPjpjRxKKq3/nfb/oVQqcZeHcXt73FfHYOwMcUbH/WIkxTvnLU7n6miMzSdtxW2FCh5h07YbFC7YJRyZPcEbyezgzvSCtpPSi1o/q49k867kE/0ntpQRKBQ+kfBWJicZhYqudXFXx7uigSbei3rxf9zyTrCy1Iu/69ipRRe3sVmt+FQFAvF5AAtONL4q89hGl2ViuU7UdSaQkAodRsv4vSpufMSQ8gef3CKvnk53Xm/1+QUqlkoXjv1INRy2gfhl3KKdvv73PCraMxsTOF1fV/djDfBKnkuyBbEcZMEp/SGIGcsoNqeYapMIYXvnNnbWwOnhUbVLMl/drKGRZ1V92i1aLrHDOBisRYfWEhKZ52TRoh3oR2uQ== devansh42@localhost.localdomain diff --git a/keys/ca_user_key b/keys/ca_user_key new file mode 100644 index 0000000..7c1c867 --- /dev/null +++ b/keys/ca_user_key @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/keys/ca_user_key.pub b/keys/ca_user_key.pub new file mode 100644 index 0000000..98fdf8c --- /dev/null +++ b/keys/ca_user_key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEycycQRFpIOPdss/DXyu59pVjZkAG9txvqwSw0nFz3YWPGka7fQ5rgGzj11wqcVvnHQ4eYaLZR11+U+dMo05uSFncXY1YNGYGLvoxS+vfHma72uu3PQFepEM0CGRnoyiK+AxauFAzEFTNczW1Hu3MXsPqZdzqgGwsnGx7E1Eo9jufK5CFFxii82qEQIrlJjyiiWjq6R+S5IWlkIVXAn7XKxpsG3s2sd2xwtvrijIWkx3jpunKgvk/GFOSQfKPX3Ht9ERwTJHW6clpZJgufe1M96czTzemM++Uj1KsJl4tGMexXKNju6kchB9173783Uyj7+QgToSDlSPQpDQFODHp7OabzTRYuhdxIgidKFO2qsB06Ew1dM7prUTMuZNJ4hoOevJKhjOvp+fK3GBMpndLqVzLMos/cRPCGmj5Crrpa01TgXoAu95SIprTrYxMt366UXjobM/xRkEIXUXoVglHUIBA+3XAoJRGtsYO1xcHUYtwCrCKmDBwkW4FkaqvqX/B4wsfmdRrIHaxKHddg/EPBnVkWoCb/7Pa4XRNPZBGgrX/kdQ2cI1gHrNUWb8EusH+o0VLY26p2WEbc4i+AhM1yZe/f+AffdDFs8s16MhGKA7m/YMZoPEHoBBk+9YoL6mXfGfKjBiP0OmVpby/hosA+kkB3EexwZGL34v6vDCsLQ== devansh42@localhost.localdomain diff --git a/keys/id_host b/keys/id_host new file mode 100644 index 0000000..b360b68 --- /dev/null +++ b/keys/id_host @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/keys/id_host-cert.pub b/keys/id_host-cert.pub new file mode 100644 index 0000000..ecac822 --- /dev/null +++ b/keys/id_host-cert.pub @@ -0,0 +1 @@ +ssh-rsa-cert-v01@openssh.com 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 devansh42@localhost.localdomain diff --git a/keys/id_host.pub b/keys/id_host.pub new file mode 100644 index 0000000..802d14e --- /dev/null +++ b/keys/id_host.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC9zWAgH+0E/iH4f0JufEN99U8LkRvYwogJGvJvxboGZod8bmuxbofKGJGxjOTqnxY1P6nzsMy6+vs8nuvFoM6sbo/HV0AD+kJlSY8lIdwtQGJAsGx9wWp1OJB4y7acTGZo6g7NAsSgu06Wh+HwcLnkmiVd43EXzZvp1VBB/w4kI7z3t8T/4YKeLlJu86wvm2P9YzXDQwEMRb5u3bbBguBK30NniPf6AngXZutLeuXozsmC487fzxxwXHgxnrgyTPkMDAl/vI4iLWNr3On5rQBlMw3nYg3nWJF7WLbboR7CG+6u1JKXRe4uhCygCC5hjvMZ3anhxV34h9e1PBWGKl0DMm6Q+g9X6qZNCF1GTedO0MdnHoJ5Y4eGburS+mpE8QIGX3WNbZpISrC1nLehwzd5bgyJrH23IfIxfD18Hw0VRKOuYqkxOiUoGsJpR/604UBOaIda346dkFKu8A/uBdvM1vst9Onvc1cWbI92I1mv2hyt871EYM5Lkhf5yhmYi3Sy64XsTKn8D0ZKpDlmUvlg0WkAPO61lDkenoOLjrAn5QxHaITwDTfARzSIAAzhrGLOFbSWOIxuuyddY72vY3uq0ENJozvy2nhE5qYh2MkQBeARTDQ16hMnwE/uK3UCtsgddvnyj3WmRod3byFZlcVidiJuUgwqhhYVnbtW3zRRdQ== diff --git a/keys/id_user b/keys/id_user new file mode 100644 index 0000000..1743df7 --- /dev/null +++ b/keys/id_user @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/keys/id_user-cert.pub b/keys/id_user-cert.pub new file mode 100644 index 0000000..644ac56 --- /dev/null +++ b/keys/id_user-cert.pub @@ -0,0 +1 @@ +ssh-rsa-cert-v01@openssh.com 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 devansh42@localhost.localdomain diff --git a/keys/id_user.pub b/keys/id_user.pub new file mode 100644 index 0000000..39c47f9 --- /dev/null +++ b/keys/id_user.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDMSsvuONicpTSDZaspgcaXFXq4G0ha42G8/Dy2b5b/PUI6JqFZlH7BtcVsb0S+k/fdgXfv3tGOZJWBIZC/b/jSyQaEwOZ48/Zd9Ksu8AeWqQiU8tw4gVlMs5lrlQ1B+3QvjkdY+nqltnCLsBckVEH7pYa3Y/6YZFRJF+/gkSeTOJf/VZ4kllCAYKJV0phjV0Jbmf8QrWcnNCMHUZYSsbofTzyHEgpgRffgs2c0YAW1p5NHgACJft8RWu7lMdeWVgZsAAAFXjB3c03jJqUpWO6tPRZr1fJg2Lfioo0vUoAz88aDB8Z4+M8IBFit2+zuic+52i7jQ2BcX1wgTc+423NAm6yLZucLkuxcYCeFMhzM69tz7jAQtKCV1r31VOly/PwSfgPVj1BR9nn9RK4zHCoyzzu/KJ4+HxRtQBuVBD2mTJZ6PostoNzN18YQibF0i023xvY0bBOclFWx5YCiE+02i6o/uRUwubBpvge+giSKF6RlJgfe/mZlJ0pP9f3Ag4JHyHtkZRVK4SYe+lo4ku4TpxGXiojD0dHGJtlGTDNEe8NkXcUm8cTQ3ZjTo+LGR2PYWw/3jciaeFuu/aDiPDMDcOJrY0iSR+IOoST79BUyEhvjniUc1hD+Q5ydWRspwaVasqQAjXAaB2OVwwTjhqv6ZOhZTVvwbrAL2b+RjD0/Q== devansh42@localhost.localdomain diff --git a/keys/key_gen.py b/keys/key_gen.py new file mode 100755 index 0000000..ce4157c --- /dev/null +++ b/keys/key_gen.py @@ -0,0 +1,33 @@ +#!/usr/bin/python3 + +""" +This script generates ssh keys for testing +""" + +import os +keys=["ca_host_key","ca_user_key","id_host","id_user"] + +#gen_keys generates key +def gen_keys(keys): + for x in keys: + os.system("ssh-keygen -t rsa -b 4096 -P '' %s "%x) + + +keyp=[("ca_host_key","id_host"),("ca_user_key","id_user")] +def gen_cert(keyp): + i=0 + cmd="ssh-keygen -s %s -I %s %s -n %s %s" + for x in keyp: + signer,key=x + if i==0: + os.system(cmd%(signer,"localhost","-h","localhost",key+".pub")) + else: + os.system(cmd%(signer,"devansh42","","devansh42",key+".pub")) + i+=1 + #Lets show this certificate + for x in keyp: + _,k=x + os.system("ssh-keygen -L -f %s-cert.pub"%k) #displaying certificates + +gen_cert(keyp) + diff --git a/keys/readme.md b/keys/readme.md new file mode 100644 index 0000000..b12b38f --- /dev/null +++ b/keys/readme.md @@ -0,0 +1 @@ +Contains ssh keys for testing puporses \ No newline at end of file diff --git a/list.go b/list.go deleted file mode 100644 index ebba36d..0000000 --- a/list.go +++ /dev/null @@ -1,3 +0,0 @@ -package shree - -//This file contains definitons of functions that are going to display some info to user diff --git a/remote/names.go b/remote/names.go index 48de025..a5af999 100644 --- a/remote/names.go +++ b/remote/names.go @@ -15,6 +15,11 @@ type CertificateRequest struct { PublicKey []byte } +type HostCertificateRequest struct { + PublicKey []byte + Principal string //Principal to be attached with certificate +} + type CertificateResponse struct { Bytes []byte }