我在 Amazon Lightsail 上创建了一个新的 NodeJS 实例,并希望从我的 Mac 命令行连接到它。不确定如何在连接命令中包含所需的 SSH 密钥Permission denied (publickey)
。
4 回答
- 转到您的 Lightsail 帐户页面下的“SSH 密钥”选项卡
- 选择您所在地区下的默认选项并下载密钥对文件
- 将是一个 .pem 文件,例如。
LightsailDefaultPrivateKey-us-west-2.pem
- 将是一个 .pem 文件,例如。
- 打开您的终端并导航到存储上述文件的目录
- 在命令行运行
chmod 600 [fileName]
以限制文件权限,因此只有您可以读取它 - 运行
ssh -i [fileName] [username]@[Public IP]
以建立与 Lightsail 的连接- 您的资源的 Lightsail Web 仪表板的“连接”选项卡下提供了用户名和 IP
使用现有的~/.ssh/id_rsa.pub
- 使用浏览器客户端登录服务器
- 做
nano ~/.ssh/authorized_keys
- 获取您的本地公钥
xclip -sel clip < ~/.ssh/id_rsa.pub
- 附加
~/.ssh/authorized_keys
复制的密钥 - 重启实例
- 使用本地登录
ssh ubuntu@[instance_public_ip]
为了能够连接到您的 amazon lightsail 实例,您需要先下载密钥。
转到账户 > SSH 密钥 ( https://lightsail.aws.amazon.com/ls/webapp/account/keys ) > 下载(确保您下载的密钥与安装实例的区域相同。)
将其保存在本地计算机的文件夹中。例如-“桌面>键”
打开终端并导航到存储密钥的目录(
cd desktop/keys
)在终端中输入此命令:(
chmod 600 keyfilename.pem
将密钥文件名称替换为您的实际密钥名称,例如chmod 600 LightsailDefaultKey-eu-west-2.pem
)
要求您的私钥文件不能被其他人访问。这就是为什么我们必须更改文件权限
- 运行此命令
ssh -i keyfilename.pem username@ip
将 keyfilename.pem 替换为您的实际文件名,将用户名替换为您的用户名(例如 bitnami 或用户),并将 IP 替换为实际 IP
您可以在您的实例页面上找到您的 IP 和用户名(https://lightsail.aws.amazon.com/ls/webapp/home/instances > 选择实例 > 管理)
我花了几个小时弄清楚如何添加一个额外的密钥来登录我的 Wordpress/Bitnami Lightsail 实例。
我虽然通过在 [ https://lightsail.aws.amazon.com/ls/webapp/account/keys][1]中添加新的密钥对,我可以直接访问我的实例,但事实并非如此。尝试通过 SSH/SFTP 连接时,我总是得到“ Permission denied (publickey) ”。
如何解决?
您应该将您的公钥直接添加到您的 Lightsail 实例中:
首先通过 Lightsail 控制台连接到您的实例。该链接应如下所示:https ://lightsail.aws.amazon.com/ls/remote/yourzone/instances/instancename/terminal?protocol=ssh
nano ~/.ssh/authorized_keys
它应该看起来像:
ssh-rsa AFGGS#%NzaC1yc2EFDSGgpCvpVhFyRSpfsdfjhgasdDSduD$
这意味着只允许一个密钥 par 通过 SSH/SFTP 连接到您的 Lightsail 实例 (voilà ! )。
您应该将新的公钥添加到该文件中:
(YOUR PREVIOUS KEY)ssh-rsa AFGGS#%NzaC1yc2EFDSGgpCvpVhFyRSpfsdfjhgasdDSduD$
(ADD NEW PUBLIC KEY) ssh-rsa ASJKAKKFS#%ASDFbsdjfhJHGJvpVhFyRSpfsdfjhgasdDSduD$
重新启动服务器并从本地终端登录:
ssh bitnami@yourpublicip -i /Users/youruser/.ssh/yourkeyfile
有了这个,我还可以在 Filezilla (Mac) 中通过 SFTP 登录,在站点管理器中添加私钥。