![如何在没有 root 帐户、sshpass 和 sudo 的情况下启用 root ssh 公钥登录?](https://linux22.com/image/163901/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%20root%20%E5%B8%90%E6%88%B7%E3%80%81sshpass%20%E5%92%8C%20sudo%20%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%90%AF%E7%94%A8%20root%20ssh%20%E5%85%AC%E9%92%A5%E7%99%BB%E5%BD%95%EF%BC%9F.png)
我创建了一个 azure vm 服务器,它是 ubuntu 1804,我需要使用它启用 root ssh 公钥登录。 Azure 不希望我在创建服务器时启用 root ssh 公钥登录,因此我需要自己使用另一个带密码的无 root 帐户来登录。
答案1
sshpass -p 'xxxYourPassword' ssh -C -o StrictHostKeyChecking=no -o ConnectTimeout=10 xxxYourServerUsername@xxxYourServerIp 'sudo bash -c '"'"'umask 077 && mkdir -p .ssh && echo '"'"'"'"'"'"'"'"'xxxYourSshPublicKey'"'"'"'"'"'"'"'"'>> /root/.ssh/authorized_keys'"'"''
将 xxxYourPassword 替换为您的密码。将 xxxYourServerIp 替换为您的服务器 IP。将 xxxYourServerUsername 替换为您的服务器用户名。将 xxxYourSshPublicKey 替换为您的 SshPublicKey 内容(应该是这样ssh-rsa xxx root@xxx
)
我知道这不是安全的方法,但我只想用一行命令并从 golang 自动调用来完成我的工作。如果您有其他自动且安全的方式,请告诉我。
有很多vps公司只能创建没有root帐户和密码,所以我必须让它自动...
谢谢https://stackoverflow.com/questions/1250079/how-to-escape-single-quotes-within-single-quoted-strings告诉我如何一次又一次地在 bash 中转义和转义字符串。