1:有没有办法在不使用密钥对的情况下登录AWS实例?我想在一个实例上设置几个站点/用户。但是,我不想为客户端提供密钥对来登录。
2:在1个AWS实例中设置托管网站/用户的最简单方法是什么,不同的域指向不同的目录?
答案 0 :(得分:122)
回答问题1
以下是我在Ubuntu EC2
上所做的事情:
A)使用密钥对以root身份登录
B)使用
设置必要的用户及其密码# sudo adduser USERNAME
# sudo passwd USERNAME
C)修改/etc/ssh/sshd_config
设置
PasswordAuthentication yes
PermitRootLogin yes
D)使用
重启ssh
守护程序
# sudo service ssh restart
如果您使用的是centOS,只需将ssh更改为sshd
现在,您可以在没有密钥对的情况下登录ec2
实例。
答案 1 :(得分:19)
1)您应该能够更改ssh配置(在Ubuntu上,这通常位于/etc/ssh
或/etc/sshd
)并重新启用密码登录。
2)没有任何关于此的AWS特定内容--Apache可以开箱即用地处理VHOSTS(虚拟主机) - 允许您指定从某个目录提供某个域。我想谷歌了解有关具体细节的更多信息。
答案 2 :(得分:13)
我来到谷歌寻找如何设置cloud init以不在AWS上禁用PasswordAuthentication的答案。答案都没有解决问题。没有它,如果你创建一个AMI,那么在实例初始化时,cloud init将再次禁用此选项。
执行此操作的正确方法是,不需要手动更改sshd_config,而是需要更正cloud init的设置(用于在配置期间配置实例的开源工具。请参阅:https://cloudinit.readthedocs.org/en/latest/)。 cloud init的配置文件位于: /etc/cloud/cloud.cfg
此文件用于设置cloud init使用的大量配置。阅读此文件,了解可在cloud-init上配置的项目示例。这包括新创建的实例上的默认用户名等项目
要通过SSH启用或禁用密码登录,您需要更改参数ssh_pwauth的值。在文件/etc/cloud/cloud.cfg中将参数ssh_pwauth从0更改为1后烘焙AMI。如果从这个新近烘焙的AMI启动,它将在配置后启用密码验证。
您可以通过检查ssh配置中PasswordAuthentication的值来确认这一点,如其他答案中所述。
答案 3 :(得分:1)
su - root
转到/etc/ssh/sshd_config
vi sshd_config
PermitRootLogin yes
PermitEmptyPasswords no
PasswordAuthentication yes
:X
然后重启ssh服务
root@cloudera2:/etc/ssh# service ssh restart
ssh stop/waiting
ssh start/running, process 10978
现在转到sudoers文件(/ etc / sudoers)。
root ALL=(ALL)NOPASSWD:ALL
yourinstanceuser ALL=(ALL)NOPASSWD:ALL / This is the user by which you are launching instance.
答案 4 :(得分:1)
最近,AWS在Systems Manager服务中添加了一个称为Sessions Manager的功能,该功能允许用户通过SSH进入实例而无需设置私钥或打开端口22。我相信可以使用IAM和可选的MFA进行身份验证。 / p>
您可以在此处找到更多相关信息:
答案 5 :(得分:0)
AWS添加了一项新功能,即无需任何开放端口即可连接到实例的AWS SSM会话管理器。 https://aws.amazon.com/blogs/aws/new-session-manager/
我创建了一个简洁的SSH ProxyCommand脚本,该脚本在与目标实例连接期间将您的公共ssh密钥临时添加到目标实例。这样做的好处是,您无需连接ssh(22)端口即可将其连接到安全组,因为ssh连接是通过ssm会话管理器建立的。
AWS SSM SSH ProxyComand-> https://gist.github.com/qoomon/fcf2c85194c55aee34b78ddcaa9e83a1
答案 6 :(得分:0)
亚马逊添加了EC2 Instance Connect
。
有一个官方脚本来自动化这个过程https://pypi.org/project/ec2instanceconnectcli/
pip install ec2instanceconnectcli
然后就是
mssh <instance id>