我正在尝试使用公钥和私钥机制与机架空间中的云服务器(运行redhat)进行无密码ssh连接。
我的命令是(在服务器中):
在rackspace云中的服务器的配置文件中:
当我尝试“ssh -i my_priv_key @server_ip”时,它失败并要求我输入@server_ip的密码。
当我在服务器上的sshd_config中添加以下行时,它表示Permission denied(publickey,gssapi-keyex,gssapi-with-mic)。
匹配用户 PasswordAuthentication no
过去几个小时我一直在努力,但我无法弄明白。所以任何想法如何解决这个问题。
答案 0 :(得分:1)
这不能完全回答您的问题,但我想向您展示another way将SSH密钥放在您的服务器上,使用Rackspace API进行自动化。例如,如果您使用pyrax:
import pyrax
import os
pyrax.set_setting("identity_type", "rackspace")
pyrax.set_setting("username", USER_NAME) # User name
pyrax.set_setting("api_key", API_KEY) # Located in the control panel in settings
# Could also use a credential file
# pyrax.set_credential_file(os.path.expanduser("~/.rackspace_cloud_credentials"))
# Put your SSH key on the Rackspace cloud
pubkey = open("my_priv_key").read()
cs.keypairs.create("testkey", pubkey)
# For demo purposes, grab a sample image, server type (flavor in OpenStack parlance)
flavor_512 = [flavor for flavor in cs.flavors.list() if flavor.ram == 512][0]
ubu_image = [img for img in cs.images.list() if "Ubuntu 12.04" in img.name][0]
# Now we can create the server and assign an ssh key
server = cs.servers.create("ubbie", ubu_image.id, flavor_512.id,
key_name="testkey")
您的API密钥位于“云控制”面板的“设置”和“联系人”中,位于安全问题下方:
构建服务器后,您应该能够获取IP地址
server = cs.servers.get(server.id)
ip = server.accessIPv4
然后使用您指定的密钥以root身份ssh。
ssh -i my_priv_key root@<ip>
如果Python不是您的首选语言,还有其他选择。如果这是你的事,你也可以直接请求/使用curl,因为这是Rackspace API和OpenStack/nova proper的一部分。
答案 1 :(得分:0)
您是否检查过权限&amp;服务器上的时间设置。 此外,你有意从帖子中删除了用户名。
尝试使用-v选项执行ssh。这将为调试提供更多输出。
答案 2 :(得分:0)
我发现在远程服务器上设置SSH密钥的最简单方法是使用ssh-copy-id命令。