1

我正在尝试使用公钥和私钥机制到机架空间中的云服务器(运行 redhat)的无密码 ssh 连接。

我的命令是(在服务器中):

  1. 添加用户 -g 根
  2. mkdir /home//.ssh
  3. 将我的公钥复制到 /home//.ssh/authorized_keys
  4. chmod 700 /home//.ssh
  5. chmod 600 /home//.ssh/authorized_keys

在机架空间云中服务器的配置文件中:

  1. RSA认证是
  2. 公钥认证是
  3. #AuthorizedKeysFile .ssh/authorized_keys

当我尝试执行“ssh -i my_priv_key @server_ip”时,它失败并询问我@server_ip 的密码。

当我将以下行添加到服务器上的 sshd_config 时,它显示 Permission denied (publickey,gssapi-keyex,gssapi-with-mic)。

匹配用户密码身份验证否

我一直在尝试过去几个小时,但无法弄清楚。所以任何想法如何解决这个问题。

4

3 回答 3

1

这并不能完全回答您的问题,但我想向您展示另一种将 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 密钥位于云控制面板中的设置和联系人中,在安全问题下方:

API 密钥

建好服务器后,你应该可以获取到 IP 地址

server = cs.servers.get(server.id)
ip = server.accessIPv4

然后只需使用您指定的密钥以 root 身份 ssh。

ssh -i my_priv_key root@<ip>

如果 Python 不是您的首选语言,还有其他选择。如果这是你的事,你也可以直接请求/使用 curl,因为这是Rackspace APIOpenStack/nova 的一部分。

于 2013-08-29T15:37:19.253 回答
0

我发现在远程服务器上设置 SSH 密钥的最简单方法是使用 ssh-copy-id 命令。

http://linux.die.net/man/1/ssh-copy-id

于 2013-08-28T19:56:59.033 回答
0

您是否检查了服务器上的权限和时间设置。另外,您是否故意从帖子中删除了用户名。

尝试使用 -v 选项执行 ssh。这将为调试提供更多输出。

于 2013-08-28T10:25:14.607 回答