ssh: load more host key formats than rsa
This commit is contained in:
		| @ -133,6 +133,7 @@ func setUserPass(user, passwordHash string) { | ||||
| 		p := strings.Split(line, ":") | ||||
| 		if len(p) < 2 || p[0] != user { | ||||
| 			buf.WriteString(line) | ||||
| 			buf.WriteByte('\n') | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
|  | ||||
							
								
								
									
										27
									
								
								ssh.go
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								ssh.go
									
									
									
									
									
								
							| @ -23,18 +23,29 @@ func startSSH(cfg *config.Config) { | ||||
| 		PublicKeyCallback: sshCheckPubkey, | ||||
| 	} | ||||
|  | ||||
| 	pkBytes, err := os.ReadFile("/id_rsa") // TODO configurable | ||||
| 	if err != nil { | ||||
| 		fatalf("ssh: failed to load private key: %v", err) | ||||
| 	hostKeyLoaded := false | ||||
|  | ||||
| 	for _, format := range []string{"rsa", "dsa", "ecdsa", "ed25519"} { | ||||
| 		pkBytes, err := os.ReadFile("/id_" + format) | ||||
| 		if err != nil { | ||||
| 			log.Printf("ssh : failed to load %s host key: %v", format, err) | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		pk, err := ssh.ParsePrivateKey(pkBytes) | ||||
| 		if err != nil { | ||||
| 			log.Printf("ssh: failed to parse %s host key: %v", format, err) | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		sshConfig.AddHostKey(pk) | ||||
| 		hostKeyLoaded = true | ||||
| 	} | ||||
|  | ||||
| 	pk, err := ssh.ParsePrivateKey(pkBytes) | ||||
| 	if err != nil { | ||||
| 		fatalf("ssh: failed to parse private key: %v", err) | ||||
| 	if !hostKeyLoaded { | ||||
| 		fatalf("ssh: failed to load any host key") | ||||
| 	} | ||||
|  | ||||
| 	sshConfig.AddHostKey(pk) | ||||
|  | ||||
| 	sshBind := ":22" // TODO configurable | ||||
| 	listener, err := net.Listen("tcp", sshBind) | ||||
| 	if err != nil { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user