fix: make sure that directory of private/public ssh key exists before creating ssh key
This commit is contained in:
16
src/user.ts
16
src/user.ts
@@ -191,16 +191,24 @@ export default class User {
|
|||||||
const privateKeyStr = privateKey;
|
const privateKeyStr = privateKey;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await fs.writeFileSync(this.getUserPublicKeyPath(), publicKeyStr);
|
// 确保公/私钥目录存在
|
||||||
await fs.writeFileSync(this.getUserPrivateKeyPath(), privateKeyStr);
|
const publicKeyDir = path.dirname(this.getUserPublicKeyPath())
|
||||||
|
if (!fs.existsSync(publicKeyDir)) {
|
||||||
|
console.log(`Directory ${publicKeyDir} does not exist, creating it...`);
|
||||||
|
// 公钥与私钥的目录一样,所以只用创建一次
|
||||||
|
fs.mkdirSync(publicKeyDir, {recursive: true})
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileSync(this.getUserPublicKeyPath(), publicKeyStr);
|
||||||
|
fs.writeFileSync(this.getUserPrivateKeyPath(), privateKeyStr);
|
||||||
// limit the permission of private key to prevent that the private key not works
|
// limit the permission of private key to prevent that the private key not works
|
||||||
await fs.chmodSync(this.getUserPrivateKeyPath(), 0o600)
|
fs.chmodSync(this.getUserPrivateKeyPath(), 0o600)
|
||||||
console.log(`User's ssh key has been created.`)
|
console.log(`User's ssh key has been created.`)
|
||||||
// 更新local user private key path
|
// 更新local user private key path
|
||||||
this.updateLocalUserPrivateKeyPath(this.getUserPrivateKeyPath())
|
this.updateLocalUserPrivateKeyPath(this.getUserPrivateKeyPath())
|
||||||
console.log(`Update local user private key path.`)
|
console.log(`Update local user private key path.`)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Failed to write public/private key into the default ssh public/key file: ", error);
|
console.error(`Failed to write public/private key into the user(${this.username}) ssh public/key file: `, error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user