Can I SSH into my Amazon EC2 server instance if I don't have .pem file from when instance was created?

In short: Yes, you can, but not without some work.

You'll need to do the following:

(For these steps, assume that the machine you're having trouble connecting to is called server-01.)

First, before starting these steps, take a snapshot of your server.

  1. Start a new, temporary instance. Call it server-02.
  2. Stop server-01. Don't terminate it, just stop it.
  3. Un-attach the root (/) EBS volume from server-01, and attach it to server-02 as, say /dev/sdb.
  4. Sign into server-02, and run: $ mkdir /mnt/temp && mount /dev/sdb /mnt/temp. This will mount server-01's root partition within the (temporary) server-02.
  5. Now you should be able to: $ vi /home/<user>/.ssh/authorized_keys and copy/paste in your public key. When you've done that, save and close the file.
  6. Now run: $ cd / && umount /mnt/temp to umount server-01's root partition from server-02.
  7. Now, just un-attach that volume from server-02, attach it back to server-01, and then start server-01. When it starts up, you should be able to ssh in again.