我已经成功创建并使用ssh -i ~/.ssh/google_compute_engine <EXTERNAL IP>
登录到GCE VM。
VM正在运行ubuntu 18.04 LTS。我已经安装了zsh。我已验证which zsh
的输出出现在/etc/shells
中。
当我尝试运行chsh -s $(which zsh)
时,系统会提示我输入密码,也不知道输入什么。
当我创建~/.ssh/google_compute_engine
(它是在先前发布的gcloud ssh
命令期间创建的)时,我没有为ssh密钥输入密码。
如何更改外壳?
编辑:这是我登录后看到的内容:
paymahn@paymahn:~$ chsh -s $(which zsh) Password: chsh: PAM: Authentication failure
答案 0 :(得分:2)
无需创建密码,只需使用sudo
# for current logged user
sudo chsh -s /bin/zsh "$USER"
# or
sudo chsh -s /bin/zsh paymahn
答案 1 :(得分:1)
在GCP VM的默认情况下,它们没有密码,因此您首先需要使用int[] retryCounter = { 0 };
// AtomicInteger retryCounter = new AtomicInteger();
for (int i = 0; i < noOfRetries; i++)
{
CompletableFuture<CompletableFuture<String>> handleAsync = cf.handleAsync((result, throwable) ->
{
if (throwable == null)
return CompletableFuture.completedFuture(result);
retryCounter[0]++;
// retryCounter.incrementAndGet();
return CompletableFuture.supplyAsync(supplier);
});
cf = handleAsync.thenCompose(Function.identity());
}
cf = cf.whenCompleteAsync((result, throwable) ->
{
System.out.println("Clean up");
System.out.println("Retry count: " + retryCounter[0]);
// System.out.println("Retry count: " + retryCounter.get());
});
System.out.println("Wating for result...");
System.out.println("Result: " + cf.get());
更改密码,然后才能为sudo passwd
shell使用根密码。
答案 2 :(得分:0)
好吧,弄清楚了,有点。我认为我根本没有设置密码。我运行sudo passwd paymahn
创建密码,然后在提示chsh
期间使用新创建的密码。
答案 3 :(得分:0)
澄清/组合现有答案(无论如何,这对我有用):
sudo passwd $USER
,给自己一个密码chsh -s /bin/zsh $USER
(没有 sudo
前缀)答案 4 :(得分:0)
将 $(which zsh)
添加到您的 .profile