- Can I somehow pass the environment variables to all terminals currently open?
Not without writing the variables to a file and manually sourcing that file in each terminal.
- Can I pass the environment variables to the whole computer instead of only one shell?
Not easily. Most processes don't accept environment variable changes from the outside at all once they've started; they just use the environment they've inherited from their parent process as-is. Shells can "pull" in environment settings by sourcing scripts, but you cannot "push" new environment variables into them from outside the process. (The terminal window and the shell inside it are two separate processes, and the environment of the shell process is the one you usually care about.)
The processes that handle user logins, on the other hand, tend to actively prune the environment they pass to the new session down to some built-in or sysadmin-controlled list of "safe" environment variables, for security reasons.
If you want anyone on the system to be able to make authenticated SSH connections to somewhere, you could create a passphraseless SSH keypair as root, place it into /etc/skel/.ssh/ directory using the default key name for that key type, and now every user you'd create from that point on would automatically get a copy of that key... and since you used the default name, it will be automatically tried by the SSH client for every outgoing connection by every user that has a copy of the key.
I think this would not be significantly less secure than granting everyone access to a single shared SSH agent. In fact, with this approach, one user could not trivially sabotage the work of other users by sending a "unload all stored keys" command to the shared SSH agent, like they could in your idea...
(This seems like a possible XY problem. Just what are you trying to achieve by sharing a single SSH agent system-wide? There might be better solutions than that if you just described the requirements of the actual problem you are trying to solve by sharing the SSH agent.)
- Is there a way to start ssh-agent without eval nor manually export?
If you have root access to the system, you could add the pam_ssh.so PAM module to the system's PAM configuration. The module has two functions:
- If used as an authentication module, it can verify the user's identity by checking if they know the passphrase of a SSH key located in
~/.ssh/login-keys.d/... but that is not the part you are interested in.
- If used as a session management module, it will start a SSH agent, automatically load it with SSH keys belonging to that user that either have no passphrase or have a passphrase that is equal to the login password used, and insert the appropriate environment variables into the environment of the session that is about to start.
At least Debian and related distributions should have the pam_ssh.so PAM module packaged as libpam-ssh. Other distributions might name their PAM library packages differently, so you might have to do a bit of searching.