| #!/bin/bash |
| |
| |
| |
|
|
| |
| __auto_start_ssh_agent() { |
| |
| if [ -n "$SSH_AGENT_PID" ] && kill -0 "$SSH_AGENT_PID" 2>/dev/null; then |
| |
| loaded_keys=$(ssh-add -l 2>/dev/null) |
| if [ $? -eq 0 ] && [ -n "$loaded_keys" ]; then |
| |
| return 0 |
| fi |
| fi |
|
|
| |
| if [ -f ~/.ssh-agent-env ]; then |
| source ~/.ssh-agent-env > /dev/null 2>&1 |
| if [ -n "$SSH_AGENT_PID" ] && kill -0 "$SSH_AGENT_PID" 2>/dev/null; then |
| |
| loaded_keys=$(ssh-add -l 2>/dev/null) |
| if [ $? -eq 0 ] && [ -n "$loaded_keys" ]; then |
| return 0 |
| fi |
| fi |
| fi |
|
|
| |
| echo "Starting ssh-agent..." |
| eval "$(ssh-agent -s)" > /dev/null 2>&1 |
|
|
| |
| echo "export SSH_AGENT_PID=$SSH_AGENT_PID" > ~/.ssh-agent-env |
| echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> ~/.ssh-agent-env |
|
|
| |
| if [ -d /root/.ssh ]; then |
| key_added=false |
| for keyfile in /root/.ssh/id_*; do |
| |
| if [[ "$keyfile" == *.pub ]] || [[ "$keyfile" == *known_hosts* ]]; then |
| continue |
| fi |
|
|
| |
| if [ -f "$keyfile" ]; then |
| |
| perms=$(stat -c %a "$keyfile" 2>/dev/null || stat -f %Lp "$keyfile" 2>/dev/null) |
| if [ "$perms" != "600" ]; then |
| echo "Warning: Fixing permissions for $keyfile" |
| chmod 600 "$keyfile" |
| fi |
|
|
| |
| echo "Adding SSH key: $keyfile" |
| if ssh-add "$keyfile" 2>/dev/null; then |
| key_added=true |
| echo "Successfully added: $(basename "$keyfile")" |
| else |
| echo "Note: Could not add $keyfile (may require passphrase)" |
| fi |
| fi |
| done |
|
|
| if [ "$key_added" = true ]; then |
| echo "SSH agent started and keys loaded successfully." |
| ssh-add -l |
| else |
| echo "No SSH keys were added. Place your private keys in /root/.ssh/" |
| fi |
| else |
| echo "Warning: /root/.ssh/ directory does not exist" |
| fi |
| } |
|
|
| |
| __auto_start_ssh_agent |
|
|
| |
| unset -f __auto_start_ssh_agent |
|
|