2013-12-16 42 views

回答

0

最簡單的方法就是做這個是通過增加下面的代碼片段到/etc/rc.local或其等價物。

#!/bin/sh 
# 
# This script will be executed *after* all the other init scripts. 
# You can put your own initialization stuff in here if you don't 
# want to do the full Sys V style init stuff. 

touch /var/lock/subsys/local 
if [ ! -d /root/.ssh ] ; then 
    mkdir -p /root/.ssh 
    chmod 0700 /root/.ssh 
fi 

# Fetch public key using HTTP 
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/aws-key 2>/dev/null 
if [ $? -eq 0 ] ; then 
    cat /tmp/aws-key >> /root/.ssh/authorized_keys 
    chmod 0600 /root/.ssh/authorized_keys 
fi 
rm -f /tmp/aws-key 

# or fetch public key using the file in the ephemeral store: 
if [ -e /mnt/openssh_id.pub ] ; then 
    cat /mnt/openssh_id.pub >> /root/.ssh/authorized_keys 
    chmod 0600 /root/.ssh/authorized_keys 
fi 
0

我不確定AMI允許用戶名/密碼登錄,但是當您從AMI創建實例時,您需要指定密鑰對。

該密鑰將被添加到默認用戶的授權密鑰(ec2-user用於Amazon Linux,ubuntu用於Ubuntu AMI等)。

0

爲什麼你不只是添加用戶/密碼的實例,然後從那裏建立你的AMI?然後,您可以更改您的/etc/ssh/sshd_config並允許使用此用戶名密碼:PasswordAuthentication yes。順便說一句,用戶名/密碼認證不推薦用於雲中的服務器,因爲中間人攻擊。 (使用它需要您自擔風險)

不知道我是否完全理解了這個問題,但如果您想在啓動時更改實例的行爲,我建議您查看cloud-init的模糊處理。實例中的配置位於/etc/cloud/cloud.cfg之下。例如對Ubuntu的默認說是這樣的:

user: ubuntu 
disable_root: 1 
preserve_hostname: False 
... 

如果要更改默認的用戶,你可以在那裏更改

user: <myuser> 
disable_root: 1 
preserve_hostname: False 
... 
+0

我的問題是刪除用戶名/密碼並添加密鑰對認證。我正在嘗試使用cloud-init來解決這個問題 –

相關問題