我正在尝试从一个 Ubuntu 盒子连接到另一个 Ubuntu 盒子。两者都是 Google Cloud Platform 中的实例,并且具有内部和外部 IP。
我正在尝试从 lbox-a 连接到 lbox-b (lbox-a 和 lbox-b 是主机名)。
在 lbox-a 中,我使用以下命令生成了 hduser1 的 SSH 密钥:
ssh-keygen -t rsa -P ""
将公钥添加到 lbox-b 时
hduser1@lbox-a:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser1@lbox-b
我收到错误:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hduser1/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Permission denied (publickey).
我尝试过更换用户1@lbox-b 具有 root、现有用户、不存在用户。并与lbox-b我还尝试使用内部IP和外部IP来代替它。
有时我也会收到超时错误:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed:
/home/ubuntu/.ssh/id_rsa.pub
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: ERROR: ssh: connect to host linuxbox-2 port 22: Connection timed out
请指导我。我不确定是权限问题、端口问题还是托管在 Google Cloud Platform 中的其他原因。
谢谢你!
答案1
失败的原因ssh-copy-id
是需要启用密码验证才能传递 ID。在该实用程序的手册页中:
ssh-copy-id是一个使用ssh(1)登录远程机器的脚本(大概使用登录密码,所以应该启用密码验证
由于 ID 尚未被复制,因此不可能以其他方式安全地进行身份验证。如果您无需事先进行身份验证即可运行该命令,那么任何人都可以将其 ID 添加到服务器。
如果您不希望继续启用密码身份验证,您当然可以在成功复制 ID 后关闭密码身份验证。或者,您可以在两台计算机之间手动复制 ID 并将其粘贴到自己身上,然后就不需要使用该ssh-copy-id
实用程序。