Sie möchten, dass sowohl der Schlüsselordner als auch der Schlüssel selbst nur für den Benutzer lesbar sind. Ich mache immer chmod 700 ~/.ssh; chmod 600 ~/.ssh/* selbst, wo Sie diese Verzeichnisse natürlich an Ihren eigenen Anwendungsfall anpassen möchten.
Alternativ können Sie chown -R $USERNAME ~/.ssh; chmod -R go-rwx ~/.ssh
Die chown kann erforderlich sein, wenn die Schlüsseldatei beispielsweise als root heruntergeladen oder installiert wurde.
Machen Sie niemals chmod 777 auf Ihrem privaten Schlüssel! Es macht es (möglicherweise) öffentlich lesbar, und das wollen Sie nicht. Außerdem weigert sich SSH in einigen Fällen sogar, eine Datei mit zu freizügigen Berechtigungen zu verwenden, sodass Sie sich damit selbst ins Knie schießen könnten.
Wenn die Berechtigungen der Datei nicht das Problem sind, kann es mehrere andere Ursachen geben. Möglicherweise haben Sie für eines der Verzeichnisse ~/.ssh falsche Berechtigungen festgelegt oder ~/.ssh/keyfolder (technisch auch auf ~ aber dann wäre dies nicht das einzige Symptom). Verwenden Sie ls -adl um diese Verzeichnisse zu inspizieren. Sie sollten rwx haben für dich, aber --- sowohl für die Gruppe als auch für die Welt.
Ein weiteres Problem könnte sein (aber das ist ziemlich selten), dass der ssh-add binär hat den setuid Bit gesetzt, was dazu führt, dass es als ein anderer Benutzer ausgeführt wird und daher kein Recht hat, Ihren privaten Schlüssel zu lesen. Verwenden Sie ls -lh $(which ssh-add) um dies zu überprüfen.