VonC already provided the short answer. Here's the long one.
You're mixing up Git's credentials (used with http / https) and ssh's public / private key based authentication. In particular, this stuff:
Host ACCOUNT1
HostName github.com
Port 22
User git-username1
IdentityFile ~/.ssh/id_rsa_2
is a set of instructions for ssh, which you would put in your .ssh/config file. Git simply runs ssh; ssh then does everything.
These instructions are slightly flawed. In particular you want User git, not User git-username1. This allows you to omit git@ in your ssh request. (If you include git@, the User line here is ignored, so the flaw becomes unimportant.)
To make ssh use these instructions, you must direct ssh to the pseudo0-host named ACCOUNT1:
ssh -Tv ACCOUNT1
from the command line, for instance, or ssh -Tv git@ACCOUNT1. Ssh matches the string literal ACCOUNT1 against the Host line, and then uses the remaining instructions—HostName, Port, User, and IdentityFile—when contacting the actual host. The host ssh contacts is that listed in the HostName section, i.e., github.com. The port used is 22 (ssh standard, so there's no need to list it). The user name will be git-username1 with the example, which is wrong, so you'd need git@ACCOUNT1 as in the alternative to override the user name.
There's one further line missing: IdentitiesOnly yes. This is not required but helps cut down on the number of keys your ssh will attempt when it contacts github.com. With IdentitiesOnly yes, each key listed in the IdentityFile line(s)—you can have more than one—will be tried, in the order they are listed. The order can matter since some servers may begin quietly ignoring keys after the first few. (Imagine you're the gatekeeper, watching folks come up and try their keys in the lock at the door to the castle. Someone—you can't see who as the light is too dim—comes up with a huge key ring with 1000 keys on it, and tries them one by one. What do you think about this person?)
So, what I like to do is this:
Host gh1
HostName github.com
User git
IdentitiesOnly yes
IdentityFile ~/.ssh/id_github1
Host gh2
HostName github.com
User git
IdentitiesOnly yes
IdentityFile ~/.ssh/id_github2
and so on. Then, when creating or updating the URL, I use:
git clone ssh://gh1/user/repo.git
or:
git remote set-url origin ssh://gh2/user/repo.git
as appropriate. To test each ssh setting, I use:
ssh -T gh1
or:
ssh -Tvvv gh2
as appropriate. The number of vs here determines the amount of extra debug output from ssh: stuff at debug level 1 is emitted with one v, stuff at debug level 2 with 2 vs, and so on. Debug level 1 suffices to watch the keys being tested.
git push.